Compare commits

...

75 Commits

Author SHA1 Message Date
DarkPhoenix
7af28b497c Fix several bugs related to siege mod rep cycle time mutations 2020-09-16 16:16:44 +03:00
DarkPhoenix
5cf555b8ce Bump version 2020-09-16 14:11:29 +03:00
DarkPhoenix
a25bb1aaa3 Update static data to 1805757 2020-09-16 14:05:33 +03:00
DarkPhoenix
24a54c9cec Merge branch 'singularity' into master 2020-09-16 14:04:02 +03:00
DarkPhoenix
c1302ce7ee Fix version 2020-09-10 04:38:52 +03:00
DarkPhoenix
e4ea9c2ab9 Bump version 2020-09-10 04:38:20 +03:00
DarkPhoenix
cca5781ca8 Bump version 2020-09-10 04:30:20 +03:00
DarkPhoenix
9760d2c4a5 Merge branch 'master' into singularity 2020-09-10 04:26:42 +03:00
DarkPhoenix
4efa9a6961 Always return some value in mutators 2020-09-10 04:25:37 +03:00
DarkPhoenix
b27d4bcbbd Merge branch 'master' into singularity 2020-09-10 03:57:34 +03:00
DarkPhoenix
7bff295012 Add some jargon definitions for capital mods with numbers 2020-09-10 03:55:52 +03:00
DarkPhoenix
01249dfd9c Validate presence of mutaplasmid item 2020-09-10 03:28:36 +03:00
DarkPhoenix
0cc2668c1c Update warfare buffs for caustic cloud 2020-09-10 02:00:15 +03:00
DarkPhoenix
dfad734a0a Update staticdata to 1801413 2020-09-10 01:01:31 +03:00
DarkPhoenix
66c901a2b0 Bump version 2020-09-09 16:38:29 +03:00
DarkPhoenix
3673e7f39e Take measures against ESI spamming error 2020-09-09 16:35:57 +03:00
Anton Vorobyov
124b35d108 Merge pull request #2264 from jrdn/delete_all_esi_fits
Delete all of a character's fits via ESI
2020-09-09 15:12:01 +03:00
DarkPhoenix
5181e8e95a Reduce point radius for linux when scaled up 2020-09-09 15:00:35 +03:00
Anton Vorobyov
48cc4ce9d4 Merge pull request #2260 from YaarPodshipnik/fix-vector-picker-dpi-scaling
Fix HiDPI scaling issues in VectorPicker
2020-09-09 14:22:21 +03:00
Anton Vorobyov
07ff43b576 Merge branch 'master' into fix-vector-picker-dpi-scaling 2020-09-09 14:09:16 +03:00
DarkPhoenix
70969cc9fb Fix structure ewar skill not affecting ECM batteries 2020-09-09 13:56:06 +03:00
DarkPhoenix
d23bf2fa4c Add SBA tiericide conversions 2020-09-09 13:33:07 +03:00
DarkPhoenix
04c8659922 Update static data to 1800064 2020-09-09 13:21:16 +03:00
Jordan Greenberg
5e3b92699b Delete all of a character's fits via ESI 2020-09-05 15:32:52 -07:00
Yaar Podshipnik
1755ab4c3f Fix HiDPI scaling issues in VectorPicker
VectorPicker was DPI unware, so when asking GetClientSize() it would
get the actual size multiplied by the scaling factor of GetContentScaleFactor().
This made the widget seem to be cut off and display only the upper left
quarter of the circle.
Similarly, when choosing the font size for the percentages, it wouldn't
scale the maximum size, resulting in very large text.
2020-08-26 17:01:20 +01:00
DarkPhoenix
26ec741094 Bump version 2020-08-25 14:21:49 +03:00
DarkPhoenix
530f7510d5 Update staticdata to 1792574 2020-08-25 14:18:27 +03:00
DarkPhoenix
37ab704cd7 Merge branch 'singularity' into master 2020-08-25 14:17:21 +03:00
DarkPhoenix
683ad3802f Unmutate destination module when moving from cargo 2020-08-25 00:46:51 +03:00
DarkPhoenix
c882351886 Make propmod speed bonuses penalizable as postMul chain, fixes black hole + propmod speeds 2020-08-21 00:15:32 +03:00
DarkPhoenix
9d71215c52 Bump version 2020-08-20 16:31:00 +03:00
DarkPhoenix
d2a0605abe Update static data to 1790093 2020-08-20 16:27:05 +03:00
DarkPhoenix
bee6652cc6 Bump version 2020-08-18 00:51:34 +03:00
DarkPhoenix
047ef75960 Update effects 2020-08-18 00:51:11 +03:00
DarkPhoenix
32e57f8138 Update staticdata to 1788518 2020-08-18 00:40:07 +03:00
DarkPhoenix
e891804b64 Allow more than 1 system-wide effect 2020-08-17 13:36:52 +03:00
DarkPhoenix
7d42b89726 Merge branch 'master' into singularity 2020-08-17 11:43:50 +03:00
Anton Vorobyov
6561996327 Merge pull request #2256 from m-sasha/perf
Re-render tab when its disabled state changes.
2020-08-17 11:42:35 +03:00
Alexander Maryanovsky
0d2ad6eac2 No longer recomputing all tab sizes when a single tab changes its disabled state. 2020-08-16 18:00:01 +03:00
Alexander Maryanovsky
3b2bfd01c5 Re-render tab when it's disabled state changes. 2020-08-16 17:45:34 +03:00
DarkPhoenix
a317dab9a8 Bump version 2020-08-15 03:56:54 +03:00
DarkPhoenix
db6d8b93e9 Re-enable meta storm menu 2020-08-15 03:39:48 +03:00
DarkPhoenix
7d585c1a62 Merge branch 'master' into singularity
# Conflicts:
#	staticdata/fsd_lite/evetypes.json
#	staticdata/phobos/metadata.json
2020-08-15 03:34:45 +03:00
DarkPhoenix
c45e84470e Add storm effects 2020-08-15 03:27:47 +03:00
DarkPhoenix
ab3b40e136 Rerun effectUsedBy 2020-08-15 02:08:09 +03:00
DarkPhoenix
b566a8bfa6 Update static data to 1786419 2020-08-15 02:06:19 +03:00
DarkPhoenix
ccb395d592 Add standard outpost rig effect 2020-08-13 13:17:50 +03:00
DarkPhoenix
3d039724c9 Relax ship name format restrictions even further 2020-08-13 01:18:03 +03:00
DarkPhoenix
d0e7e7eed5 Merge branch 'master' of github.com:pyfa-org/Pyfa into master 2020-08-13 01:16:08 +03:00
DarkPhoenix
a387bc8d09 Fix import of ship/structure names containing single quotes 2020-08-13 01:15:41 +03:00
Anton Vorobyov
94344bd432 Merge pull request #2254 from Neugeniko/Issue/2253
Updated 'Retaliating Caldari Entities' target profile
2020-08-12 12:14:48 +03:00
DarkPhoenix
a976fb33f0 Fix defender velocity hardwiring 2020-08-12 00:11:52 +03:00
DarkPhoenix
f850fdf0d5 Bump version 2020-08-11 19:59:46 +03:00
DarkPhoenix
0fcbedba45 Disable metaliminal storm context menu 2020-08-11 19:58:44 +03:00
DarkPhoenix
5707bddacd Update staticdata to 1782806 2020-08-11 19:56:33 +03:00
Neugeniko
8ed9257dfa Updated 'Retaliating Caldari Entities' target profile
2020/08/12 Eve Online Patch increased Em Resists for some npc in the group of  'Retaliating Caldari Entities'
The groups target profile has been recalculated and edited.
2020-08-12 02:56:13 +10:00
DarkPhoenix
056ae590cf Merge branch 'master' into singularity 2020-08-10 17:39:37 +03:00
DarkPhoenix
7733fd38c2 Do not set read-only property 2020-08-10 17:39:08 +03:00
DarkPhoenix
fef78c971f Add effects used by metaliminal storms
Most of them are stubs, so just 2 so far
2020-08-05 22:57:45 +03:00
DarkPhoenix
e52ceacdb9 Add liminal storms to projection menu 2020-08-05 22:46:43 +03:00
DarkPhoenix
85b2d7af8d Add item conversions
Based on my own assumptions about them
2020-08-05 22:21:27 +03:00
DarkPhoenix
3e658a31bb Process renamed items 2020-08-05 21:54:56 +03:00
DarkPhoenix
0d2a4d4d44 Update metadata to 1780302 2020-08-05 21:40:59 +03:00
Anton Vorobyov
bc2cdcdea7 Merge pull request #2249 from m-sasha/undup-tab-selection
_TabsContainer.CheckTabSelected no longer posts PageChanged event twice
2020-07-31 11:59:38 +03:00
Anton Vorobyov
30ad554cc0 Merge pull request #2248 from m-sasha/no-half-second-sleep
Do not sleep for half a second in OpenFitsThread.run()
2020-07-31 11:59:06 +03:00
Anton Vorobyov
4a85fd5d1b Merge pull request #2247 from m-sasha/fast-tabs-resize
Ignore _TabRenderer.SetSize when new size is the same as old size
2020-07-31 11:58:35 +03:00
Alexander Maryanovsky
4d8dbe74bd _TabsContainer.CheckTabSelected no longer posts PageChanged event twice 2020-07-30 16:03:00 +03:00
Alexander Maryanovsky
016f2b44ff Do not sleep for half a second in OpenFitsThread.run() 2020-07-30 11:35:30 +03:00
Alexander Maryanovsky
676794baed Ignore _TabRenderer.SetSize when new size is the same as old size. 2020-07-30 11:31:00 +03:00
Anton Vorobyov
ca488089fd Merge pull request #2231 from fonsuiplaysvideogames/master
Updates to Abyss room-wide and localized weather effects
2020-07-30 08:04:42 +03:00
Anton Vorobyov
96f9b9a719 Merge branch 'master' into master 2020-07-30 08:04:09 +03:00
fonsuiplaysvideogames
508572e08b Update fit.py 2020-07-29 21:33:15 -04:00
DarkPhoenix
f91e0b2e23 Do not crash on ship w/o labels and w/o slots 2020-07-29 09:02:46 +03:00
fonsuiplaysvideogames
2f02747b29 Update fit.py 2020-07-16 16:24:08 -04:00
fonsuiplaysvideogames
78b176a135 Update fit.py 2020-07-16 16:20:24 -04:00
35 changed files with 23812 additions and 2588 deletions

View File

@@ -0,0 +1,50 @@
"""
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))

View File

@@ -0,0 +1,26 @@
"""
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))

View File

@@ -441,7 +441,7 @@ class Effect63(BaseEffect):
Used by:
Modules from group: Armor Coating (184 of 184)
Modules from group: Armor Plating Energized (187 of 187)
Modules from group: Energized Armor Membrane (169 of 169)
"""
type = 'passive'
@@ -2447,7 +2447,7 @@ class Effect856(BaseEffect):
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
penalized = False if 'skill' in context or 'implant' in context else True
fit.ship.boostItemAttr('baseWarpSpeed', container.getModifiedItemAttr('WarpSBonus'),
fit.ship.boostItemAttr('warpSpeedMultiplier', container.getModifiedItemAttr('WarpSBonus'),
stackingPenalties=penalized, **kwargs)
@@ -6079,7 +6079,7 @@ class Effect2041(BaseEffect):
Used by:
Modules from group: Armor Coating (184 of 184)
Modules from group: Armor Plating Energized (187 of 187)
Modules from group: Energized Armor Membrane (169 of 169)
"""
type = 'passive'
@@ -6256,7 +6256,7 @@ class Effect2109(BaseEffect):
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plating Energized',
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane',
'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
@@ -6272,7 +6272,7 @@ class Effect2110(BaseEffect):
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plating Energized',
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane',
'explosiveDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
@@ -6289,7 +6289,7 @@ class Effect2111(BaseEffect):
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plating Energized',
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane',
'kineticDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
@@ -6306,7 +6306,7 @@ class Effect2112(BaseEffect):
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plating Energized',
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane',
'thermalDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
@@ -8691,8 +8691,8 @@ class Effect2872(BaseEffect):
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Defender Missiles'),
'maxVelocity', container.getModifiedItemAttr('missileVelocityBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Defender Missiles'),
'maxVelocity', container.getModifiedItemAttr('missileVelocityBonus'), **kwargs)
class Effect2881(BaseEffect):
@@ -12389,6 +12389,8 @@ class Effect3992(BaseEffect):
Celestials named like: Class Pulsar Effects (6 of 6)
Celestial: Republic Stellar Observatory
Celestial: State Stellar Observatory
Celestial: Strong Metaliminal Gamma Ray Storm
Celestial: Weak Metaliminal Gamma Ray Storm
"""
runTime = 'early'
@@ -12424,6 +12426,8 @@ class Effect3995(BaseEffect):
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestial: Strong Metaliminal Gamma Ray Storm
Celestial: Weak Metaliminal Gamma Ray Storm
"""
runTime = 'early'
@@ -12442,6 +12446,8 @@ class Effect3996(BaseEffect):
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestials named like: Incursion Effect (2 of 2)
Celestial: Strong Metaliminal Electrical Storm
Celestial: Weak Metaliminal Electrical Storm
"""
runTime = 'early'
@@ -12460,6 +12466,8 @@ class Effect3997(BaseEffect):
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestials named like: Incursion Effect (2 of 2)
Celestial: Strong Metaliminal Gamma Ray Storm
Celestial: Weak Metaliminal Gamma Ray Storm
"""
runTime = 'early'
@@ -12479,6 +12487,8 @@ class Effect3998(BaseEffect):
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestials named like: Incursion Effect (2 of 2)
Celestial: Strong Metaliminal Exotic Matter Storm
Celestial: Weak Metaliminal Exotic Matter Storm
"""
runTime = 'early'
@@ -12498,6 +12508,8 @@ class Effect3999(BaseEffect):
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestials named like: Incursion Effect (2 of 2)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -12551,6 +12563,8 @@ class Effect4016(BaseEffect):
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -12569,6 +12583,8 @@ class Effect4017(BaseEffect):
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -12587,6 +12603,8 @@ class Effect4018(BaseEffect):
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -12605,6 +12623,8 @@ class Effect4019(BaseEffect):
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -12623,6 +12643,8 @@ class Effect4020(BaseEffect):
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -12641,6 +12663,8 @@ class Effect4021(BaseEffect):
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -12659,6 +12683,8 @@ class Effect4022(BaseEffect):
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -13183,6 +13209,8 @@ class Effect4088(BaseEffect):
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
Celestial: Dazh Liminality Locus
Celestial: Strong Metaliminal Gamma Ray Storm
Celestial: Weak Metaliminal Gamma Ray Storm
"""
runTime = 'early'
@@ -13191,8 +13219,10 @@ class Effect4088(BaseEffect):
@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, **kwargs)
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):
@@ -13202,6 +13232,8 @@ class Effect4089(BaseEffect):
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
Celestial: Dazh Liminality Locus
Celestial: Strong Metaliminal Gamma Ray Storm
Celestial: Weak Metaliminal Gamma Ray Storm
"""
runTime = 'early'
@@ -13210,8 +13242,10 @@ class Effect4089(BaseEffect):
@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)
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):
@@ -13220,6 +13254,8 @@ class Effect4090(BaseEffect):
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
Celestial: Strong Metaliminal Gamma Ray Storm
Celestial: Weak Metaliminal Gamma Ray Storm
"""
runTime = 'early'
@@ -13237,6 +13273,8 @@ class Effect4091(BaseEffect):
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
Celestials named like: Class Pulsar Effects (6 of 6)
Celestial: Strong Metaliminal Electrical Storm
Celestial: Weak Metaliminal Electrical Storm
"""
runTime = 'early'
@@ -13355,6 +13393,8 @@ class Effect4135(BaseEffect):
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestial: Strong Metaliminal Electrical Storm
Celestial: Weak Metaliminal Electrical Storm
"""
runTime = 'early'
@@ -13372,6 +13412,8 @@ class Effect4136(BaseEffect):
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestial: Strong Metaliminal Gamma Ray Storm
Celestial: Weak Metaliminal Gamma Ray Storm
"""
runTime = 'early'
@@ -13390,6 +13432,8 @@ class Effect4137(BaseEffect):
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestial: Strong Metaliminal Exotic Matter Storm
Celestial: Weak Metaliminal Exotic Matter Storm
"""
runTime = 'early'
@@ -13408,6 +13452,8 @@ class Effect4138(BaseEffect):
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -16432,6 +16478,8 @@ class Effect4906(BaseEffect):
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -16439,9 +16487,9 @@ class Effect4906(BaseEffect):
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.drones.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Fighters'),
'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)
class Effect4911(BaseEffect):
@@ -23067,6 +23115,8 @@ class Effect5913(BaseEffect):
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestial: Federal Stellar Observatory
Celestial: Imperial Stellar Observatory
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -23195,6 +23245,8 @@ class Effect5920(BaseEffect):
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -23203,7 +23255,8 @@ class Effect5920(BaseEffect):
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'), **kwargs)
'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5921(BaseEffect):
@@ -23345,6 +23398,8 @@ class Effect5929(BaseEffect):
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -26852,7 +26907,7 @@ class Effect6400(BaseEffect):
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Structure Warp Scrambler', 'Structure Disruption Battery', 'Structure Stasis Webifier')
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)
@@ -26967,15 +27022,12 @@ class Effect6406(BaseEffect):
@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)
@@ -26996,8 +27048,7 @@ class Effect6407(BaseEffect):
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'),
stackingPenalties=True, **kwargs)
'capacitorNeed', src.getModifiedItemAttr('structureRigEwarCapUseBonus'), **kwargs)
class Effect6408(BaseEffect):
@@ -27102,8 +27153,7 @@ class Effect6413(BaseEffect):
@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'),
stackingPenalties=True, **kwargs)
'capacitorNeed', src.getModifiedItemAttr('structureRigPDCapUseBonus'), **kwargs)
class Effect6417(BaseEffect):
@@ -31486,7 +31536,9 @@ class Effect6730(BaseEffect):
speedBoost = module.getModifiedItemAttr('speedFactor')
mass = fit.ship.getModifiedItemAttr('mass')
thrust = module.getModifiedItemAttr('speedBoostFactor')
fit.ship.boostItemAttr('maxVelocity', speedBoost * thrust / mass, **kwargs)
# 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)
@@ -31508,7 +31560,9 @@ class Effect6731(BaseEffect):
speedBoost = module.getModifiedItemAttr('speedFactor')
mass = fit.ship.getModifiedItemAttr('mass')
thrust = module.getModifiedItemAttr('speedBoostFactor')
fit.ship.boostItemAttr('maxVelocity', speedBoost * thrust / mass, **kwargs)
# 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):
@@ -35059,7 +35113,7 @@ class Effect7086(BaseEffect):
shipbonusPCTTrackingPC2
Used by:
Variations of ship: Vedmak (2 of 2)
Ship: Ikitursa
Ship: Tiamat
"""
@@ -35207,6 +35261,39 @@ class Effect7097(BaseEffect):
'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
@@ -35766,6 +35853,8 @@ class Effect7193(BaseEffect):
Used by:
Celestials named like: Stellar Observatory (4 of 4)
Celestials named like: Triglavian Invasion System Effects (3 of 3)
Celestial: Strong Metaliminal Exotic Matter Storm
Celestial: Weak Metaliminal Exotic Matter Storm
"""
runTime = 'early'
@@ -36080,10 +36169,12 @@ class Effect7234(BaseEffect):
class Effect7237(BaseEffect):
"""
systemWarpSpeed
systemWarpSpeedBonus
Used by:
Celestial: Dazh Liminality Locus
Celestial: Strong Metaliminal Exotic Matter Storm
Celestial: Weak Metaliminal Exotic Matter Storm
"""
runTime = 'early'
@@ -36261,6 +36352,22 @@ class Effect8018(BaseEffect):
'duration', implant.getModifiedItemAttr('remoteRepDurationBonus'), **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
@@ -36850,3 +36957,227 @@ class Effect8073(BaseEffect):
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 Effect8075(BaseEffect):
"""
systemHullEmResistance
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.boostItemAttr('emDamageResonance', beacon.getModifiedItemAttr('emDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect8076(BaseEffect):
"""
systemHullThermalResistance
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.ship.boostItemAttr('thermalDamageResonance', beacon.getModifiedItemAttr('thermalDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect8077(BaseEffect):
"""
systemHullKineticResistance
Used by:
Celestial: Strong Metaliminal Exotic Matter Storm
Celestial: Weak Metaliminal Exotic Matter Storm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('kineticDamageResonance', container.getModifiedItemAttr('kineticDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect8078(BaseEffect):
"""
systemHullExplosiveResistance
Used by:
Celestial: Strong Metaliminal Gamma Ray Storm
Celestial: Weak Metaliminal Gamma Ray Storm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('explosiveDamageResonance', container.getModifiedItemAttr('explosiveDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect8079(BaseEffect):
"""
systemVirusCoherenceBonus
Used by:
Celestial: Strong Metaliminal Electrical Storm
Celestial: Weak Metaliminal Electrical Storm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Archaeology'),
'virusCoherence', container.getModifiedItemAttr('virusCoherenceBonus'), **kwargs)
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'),
'virusCoherence', container.getModifiedItemAttr('virusCoherenceBonus'), **kwargs)
class Effect8080(BaseEffect):
"""
systemProbeStrengthBonus
Used by:
Celestial: Strong Metaliminal Electrical Storm
Celestial: Weak Metaliminal Electrical Storm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'),
'baseSensorStrength', container.getModifiedItemAttr('scanProbeStrengthBonus'),
stackingPenalties=True, **kwargs)
class Effect8081(BaseEffect):
"""
systemDisallowCloaking
Used by:
Celestial: Strong Metaliminal Electrical Storm
Celestial: Weak Metaliminal Electrical Storm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('disallowCloaking', src.getModifiedItemAttr('disallowCloaking'), **kwargs)
class Effect8082(BaseEffect):
"""
systemScanResolutionBonus
Used by:
Celestial: Strong Metaliminal Exotic Matter Storm
Celestial: Weak Metaliminal Exotic Matter Storm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanResolution', container.getModifiedItemAttr('scanResolutionBonus'),
stackingPenalties=True, **kwargs)
class Effect8083(BaseEffect):
"""
systemArmorRepairerDurationBonus
Used by:
Celestial: Strong Metaliminal Exotic Matter Storm
Celestial: Weak Metaliminal Exotic Matter Storm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems') or
mod.item.requiresSkill('Capital Repair Systems'),
'duration', container.getModifiedItemAttr('armorRepairDurationBonus'), **kwargs)
class Effect8084(BaseEffect):
"""
systemShieldBoosterDurationBonus
Used by:
Celestial: Strong Metaliminal Exotic Matter Storm
Celestial: Weak Metaliminal Exotic Matter Storm
"""
runTime = 'early'
type = ('projected', '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'),
'duration', container.getModifiedItemAttr('shieldBoosterDurationBonus'), **kwargs)
class Effect8085(BaseEffect):
"""
systemFighterExplosionRadius
Used by:
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.fighters.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileExplosionRadius', container.getModifiedItemAttr('aoeCloudSizeMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.fighters.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesExplosionRadius', container.getModifiedItemAttr('aoeCloudSizeMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)

View File

@@ -752,14 +752,14 @@ class Fit:
if 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)
if warfareBuffID == 80: # AOE_Beacon_caustic_cloud_local_repair
self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"),
"armorDamageAmount", value, stackingPenalties=True)
if warfareBuffID == 80: # AOE_Beacon_caustic_cloud_inertia
self.ship.boostItemAttr("agility", value, stackingPenalties=True)
if warfareBuffID == 81: # AOE_Beacon_caustic_cloud_remote_repair
self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"),
"armorDamageAmount", value, stackingPenalties=True)
if warfareBuffID == 81: # AOE_Beacon_caustic_cloud_velocity
self.ship.boostItemAttr("maxVelocity", value, stackingPenalties=True)
if warfareBuffID == 88: # AOE_Beacon_filament_cloud_shield_booster_shield_bonus
self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation"),
@@ -774,7 +774,11 @@ class Fit:
if 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
if warfareBuffID == 92: # Weather_electric_storm_capacitor_recharge_bonus
self.ship.boostItemAttr("rechargeRate", value, stackingPenalties=True)
@@ -782,32 +786,54 @@ class Fit:
if 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
if warfareBuffID == 94: # Weather_xenon_gas_shield_hp_bonus
self.ship.boostItemAttr("shieldCapacity", value) # for hull
self.ship.boostItemAttr("shieldCapacity", value)
self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"),
"shieldCapacity", value)
if 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
if warfareBuffID == 96: # Weather_infernal_armor_hp_bonus
self.ship.boostItemAttr("armorHP", value) # for hull
self.ship.boostItemAttr("armorHP", value)
self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"),
"armorHP", value)
if 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)
if warfareBuffID == 98: # Weather_darkness_velocity_bonus
self.ship.boostItemAttr("maxVelocity", value)
self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"),
"maxVelocity", value)
if 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
if warfareBuffID == 100: # Weather_caustic_toxin_scan_resolution_bonus
self.ship.boostItemAttr("scanResolution", value, stackingPenalties=True)

View File

@@ -198,11 +198,18 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
# todo: validate baseItem as well if it's set.
if self.isEmpty:
return False
return (
self.__item is None or (
self.__item.category.name not in ("Module", "Subsystem", "Structure Module") and
self.__item.group.name not in self.SYSTEM_GROUPS) or
(self.item.isAbyssal and not self.isMutated))
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.isAbyssal and not self.isMutated:
return True
if self.isMutated and not self.__mutaplasmid:
return True
return False
@property
def isMutated(self):
@@ -267,7 +274,9 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
@property
def isExclusiveSystemEffect(self):
return self.item.group.name in ("Effect Beacon", "Non-Interactable Object", "MassiveEnvironments")
# See issue #2258
# return self.item.group.name in ("Effect Beacon", "Non-Interactable Object", "MassiveEnvironments")
return False
@property
def isCapitalSize(self):

View File

@@ -89,12 +89,9 @@ class Mutator(EqBase):
# sweet, all good
returnVal = val
else:
# need to fudge the numbers a bit. Go with the value closest to base
if val >= 0:
returnVal = min(self.maxValue, max(self.minValue, val))
else:
returnVal = max(self.maxValue, min(self.minValue, val))
actualMin = min(self.minValue, self.maxValue)
actualMax = max(self.minValue, self.maxValue)
returnVal = min(actualMax, max(actualMin, val))
return returnVal
@property
@@ -120,15 +117,24 @@ class Mutator(EqBase):
@property
def baseValue(self):
return self.baseAttribute.value
try:
return self.baseAttribute.value
except AttributeError:
return 0
@property
def minValue(self):
return self.minMod * self.baseAttribute.value
try:
return self.minMod * self.baseAttribute.value
except AttributeError:
return 0
@property
def maxValue(self):
return self.maxMod * self.baseAttribute.value
try:
return self.maxMod * self.baseAttribute.value
except AttributeError:
return 0
@property
def attribute(self):

View File

@@ -86,7 +86,7 @@ BUILTINS = OrderedDict([
# Source: ticket #2067
(-52, ('[NPC][Invasion]Invading Precursor Entities', 0.422, 0.367, 0.453, 0.411)),
(-53, ('[NPC][Invasion]Retaliating Amarr Entities', 0.360, 0.310, 0.441, 0.602)),
(-54, ('[NPC][Invasion]Retaliating Caldari Entities', 0.287, 0.610, 0.487, 0.401)),
(-54, ('[NPC][Invasion]Retaliating Caldari Entities', 0.303, 0.610, 0.487, 0.401)),
(-55, ('[NPC][Invasion]Retaliating Gallente Entities', 0.383, 0.414, 0.578, 0.513)),
(-56, ('[NPC][Invasion]Retaliating Minmatar Entities', 0.620, 0.422, 0.355, 0.399)),
(-57, ('[NPC][Abyssal][Dark Matter All Tiers]Drones', 0.439, 0.522, 0.529, 0.435)),

View File

@@ -36,9 +36,9 @@ class VectorPicker(wx.Window):
self._labelpos = int(kwargs.pop('labelpos', 0))
self._offset = float(kwargs.pop('offset', 0))
self._size = max(0, float(kwargs.pop('size', 50)))
self._fontsize = max(1, float(kwargs.pop('fontsize', 8)))
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(self._fontsize, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
self._angle = 0
self.__length = 1
@@ -107,8 +107,11 @@ class VectorPicker(wx.Window):
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.GetClientSize()
width, height = self.GetScaledClientSize()
if not width or not height:
return
dc.SetBackground(wx.Brush(self.GetBackgroundColour(), wx.BRUSHSTYLE_SOLID))
@@ -122,9 +125,11 @@ class VectorPicker(wx.Window):
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(radius + 2, radius + 2, radius + 2 + x * self._length, radius + 2 - y * self._length)
dc.SetBrush(wx.BLACK_BRUSH)
dc.DrawCircle(radius + 2 + x * self._length, radius + 2 - y * self._length, 2)
dc.DrawCircle(radius + 2 + x * self._length, radius + 2 - y * self._length, pointRadius)
if self._label:
labelText = self._label

View File

@@ -102,18 +102,21 @@ class AddEnvironmentEffect(ContextMenuUnconditional):
def getData(self):
data = Group()
data.groups['Metaliminal Storm'] = self.getEffectBeacons(
'Electrical', 'Exotic', 'Gamma', 'Plasma',
extra_garbage=('Metaliminal', 'Storm', 'Matter', 'Ray', 'Firestorm'))
data.groups['Wormhole'] = self.getEffectBeacons(
'Black Hole', 'Cataclysmic Variable', 'Magnetar',
'Pulsar', 'Red Giant', 'Wolf Rayet')
data.groups['Abyssal Weather'] = self.getAbyssalWeather()
data.groups['Sansha Incursion'] = self.getEffectBeacons('Sansha Incursion')
data.groups['Triglavian Invasion'] = self.getEffectBeacons('Triglavian Invasion')
data.groups['Triglavian Invasion'].groups['Destructible Beacons'] = self.getDestructibleBeacons()
data.groups['Abyssal Weather'] = self.getAbyssalWeather()
return data
def getEffectBeacons(self, *groups):
def getEffectBeacons(self, *groups, extra_garbage=()):
"""
Get dictionary with wormhole system-wide effects
Get dictionary with system-wide effects
"""
compacted = len(groups) <= 1
sMkt = Market.getInstance()
@@ -122,7 +125,8 @@ class AddEnvironmentEffect(ContextMenuUnconditional):
data = Group()
# Stuff we don't want to see in names
garbages = ("System Effects", "Effects")
garbages = ["System Effects", "Effects"]
garbages.extend(extra_garbage)
# Get group with all the system-wide beacons
grp = sMkt.getGroup("Effect Beacon")

View File

@@ -89,6 +89,7 @@ class ItemMutatorList(wx.ScrolledWindow):
higOverrides = {
('Stasis Web', 'speedFactor'): False,
('Damage Control', 'duration'): True,
('Siege Module', 'siegeLocalLogisticsDurationBonus'): False
}
first = True

View File

@@ -562,7 +562,10 @@ class FittingView(d.Display):
if sFit.serviceFittingOptions["rackSlots"]:
# flag to know when to add blanks, based on previous slot
slotDivider = None if sFit.serviceFittingOptions["rackLabels"] else self.mods[0].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):

View File

@@ -367,7 +367,7 @@ class _TabRenderer:
width = max(width, self.min_width)
height = max(height, self.min_height)
self.disabled = False
self._disabled = False
self.baseText = text
self.extraText = ''
self.tab_size = (width, height)
@@ -383,6 +383,18 @@ class _TabRenderer:
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
@@ -402,6 +414,10 @@ class _TabRenderer:
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()
@@ -927,7 +943,6 @@ class _TabsContainer(wx.Panel):
tb_renderer = self.tabs[tab]
tb_renderer.disabled = disabled
self.AdjustTabsSize()
self.Refresh()
def GetSelectedTab(self):
@@ -975,9 +990,6 @@ class _TabsContainer(wx.Panel):
sel_tab = self.tabs.index(tab)
self.Parent.SetSelection(sel_tab)
wx.PostEvent(self.Parent, PageChanged(self.tabs.index(old_sel_tab),
self.tabs.index(tab)))
return True
return False

View File

@@ -62,8 +62,10 @@ class EveFittings(AuxiliaryFrame):
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
self.importBtn = wx.Button(self, wx.ID_ANY, "Import to pyfa", wx.DefaultPosition, wx.DefaultSize, 5)
self.deleteBtn = wx.Button(self, wx.ID_ANY, "Delete from EVE", wx.DefaultPosition, wx.DefaultSize, 5)
self.deleteAllBtn = wx.Button(self, wx.ID_ANY, "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)
@@ -72,6 +74,7 @@ class EveFittings(AuxiliaryFrame):
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)
@@ -169,6 +172,37 @@ class EveFittings(AuxiliaryFrame):
pyfalog.error(msg)
self.statusbar.SetStatusText(msg)
def deleteAllFittings(self, event):
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:
for fit in self.fittings:
sEsi.delFitting(activeChar, fit['fitting_id'])
anyDeleted = True
except requests.exceptions.ConnectionError:
msg = "Connection error, please check your internet connection"
pyfalog.error(msg)
self.statusbar.SetStatusText(msg)
except APIException as ex:
if anyDeleted:
msg = "Some fits were not deleted: ESI error {} received".format(ex.status_code)
else:
msg = "Failed to delete fits: ESI error {} received".format(ex.status_code)
pyfalog.error(msg)
self.statusbar.SetStatusText(msg)
# repopulate the fitting list
self.fitTree.populateSkillTree(self.fittings)
self.fitView.update([])
class ESIServerExceptionHandler:
def __init__(self, parentWindow, ex):

View File

@@ -63,8 +63,8 @@ class GuiCargoToLocalModuleCommand(wx.Command):
dstModSlot = dstMod.slot
if self.srcCargoItemID == dstModItemID:
return False
# To keep all old item properties, copy them over from old module
newModInfo = ModuleInfo.fromModule(dstMod)
# 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

View File

@@ -110,8 +110,6 @@ class OpenFitsThread(threading.Thread):
self.start()
def run(self):
time.sleep(0.5) # Give GUI some time to finish drawing
# `startup` tells FitSpawner that we are loading fits are startup, and
# has 3 values:
# False = Set as default in FitSpawner itself, never set here

View File

@@ -16,226 +16,10 @@ rename_phrase = " renamed to "
conversion_phrase = " converted to "
text = """
Limited Layered Plating I converted to Upgraded Layered Coating I
'Scarab' Layered Plating I converted to Upgraded Layered Coating I
'Grail' Layered Plating I converted to Upgraded Layered Coating I
Limited Adaptive Nano Plating I converted to Upgraded Multispectrum Coating I
'Collateral' Adaptive Nano Plating I converted to Upgraded Multispectrum Coating I
'Refuge' Adaptive Nano Plating I converted to Upgraded Multispectrum Coating I
Limited EM Plating I converted to Upgraded EM Coating I
'Contour' EM Plating I converted to Upgraded EM Coating I
'Spiegel' EM Plating I converted to Upgraded EM Coating I
Limited Explosive Plating I converted to Upgraded Explosive Coating I
Experimental Explosive Plating I converted to Upgraded Explosive Coating I
'Aegis' Explosive Plating I converted to Upgraded Explosive Coating I
Limited Kinetic Plating I converted to Upgraded Kinetic Coating I
Experimental Kinetic Plating I converted to Upgraded Kinetic Coating I
'Element' Kinetic Plating I converted to Upgraded Kinetic Coating I
Limited Thermal Plating I converted to Upgraded Thermal Coating I
Experimental Thermal Plating I converted to Upgraded Thermal Coating I
Prototype Thermal Plating I converted to Upgraded Thermal Coating I
Basic EM Plating renamed to 'Basic' EM Coating
EM Plating I renamed to EM Coating I
EM Plating II renamed to EM Coating II
Basic Explosive Plating renamed to 'Basic' Explosive Coating
Explosive Plating I renamed to Explosive Coating I
Explosive Plating II renamed to Explosive Coating II
Basic Layered Plating renamed to 'Basic' Layered Coating
Layered Plating I renamed to Layered Coating I
Layered Plating II renamed to Layered Coating II
Basic Kinetic Plating renamed to 'Basic' Kinetic Coating
Kinetic Plating I renamed to Kinetic Coating I
Kinetic Plating II renamed to Kinetic Coating II
Basic Thermal Plating renamed to 'Basic' Thermal Coating
Thermal Plating I renamed to Thermal Coating I
Thermal Plating II renamed to Thermal Coating II
Basic Adaptive Nano Plating renamed to 'Basic' Multispectrum Coating
Adaptive Nano Plating I renamed to Multispectrum Coating I
Adaptive Nano Plating II renamed to Multispectrum Coating II
Domination Adaptive Nano Plating renamed to Domination Multispectrum Coating
True Sansha Adaptive Nano Plating renamed to True Sansha Multispectrum Coating
Dark Blood Adaptive Nano Plating renamed to Dark Blood Multispectrum Coating
Domination Kinetic Plating renamed to Domination Kinetic Coating
True Sansha Kinetic Plating renamed to True Sansha Kinetic Coating
Dark Blood Kinetic Plating renamed to Dark Blood Kinetic Coating
Domination Explosive Plating renamed to Domination Explosive Coating
True Sansha Explosive Plating renamed to True Sansha Explosive Coating
Dark Blood Explosive Plating renamed to Dark Blood Explosive Coating
Domination EM Plating renamed to Domination EM Coating
True Sansha EM Plating renamed to True Sansha EM Coating
Dark Blood EM Plating renamed to Dark Blood EM Coating
Domination Thermal Plating renamed to Domination Thermal Coating
True Sansha Thermal Plating renamed to True Sansha Thermal Coating
Dark Blood Thermal Plating renamed to Dark Blood Thermal Coating
Shadow Serpentis Adaptive Nano Plating renamed to Shadow Serpentis Multispectrum Coating
Shadow Serpentis Kinetic Plating renamed to Shadow Serpentis Kinetic Coating
Shadow Serpentis Explosive Plating renamed to Shadow Serpentis Explosive Coating
Shadow Serpentis EM Plating renamed to Shadow Serpentis EM Coating
Shadow Serpentis Thermal Plating renamed to Shadow Serpentis Thermal Coating
Mizuro's Modified Adaptive Nano Plating renamed to Mizuro's Modified Multispectrum Coating
Gotan's Modified Adaptive Nano Plating renamed to Gotan's Modified Multispectrum Coating
Mizuro's Modified Kinetic Plating renamed to Mizuro's Modified Kinetic Coating
Gotan's Modified Kinetic Plating renamed to Gotan's Modified Kinetic Coating
Mizuro's Modified Explosive Plating renamed to Mizuro's Modified Explosive Coating
Gotan's Modified Explosive Plating renamed to Gotan's Modified Explosive Coating
Mizuro's Modified EM Plating renamed to Mizuro's Modified EM Coating
Gotan's Modified EM Plating renamed to Gotan's Modified EM Coating
Mizuro's Modified Thermal Plating renamed to Mizuro's Modified Thermal Coating
Gotan's Modified Thermal Plating renamed to Gotan's Modified Thermal Coating
Brokara's Modified Adaptive Nano Plating renamed to Brokara's Modified Multispectrum Coating
Tairei's Modified Adaptive Nano Plating renamed to Tairei's Modified Multispectrum Coating
Selynne's Modified Adaptive Nano Plating renamed to Selynne's Modified Multispectrum Coating
Raysere's Modified Adaptive Nano Plating renamed to Raysere's Modified Multispectrum Coating
Vizan's Modified Adaptive Nano Plating renamed to Vizan's Modified Multispectrum Coating
Ahremen's Modified Adaptive Nano Plating renamed to Ahremen's Modified Multispectrum Coating
Chelm's Modified Adaptive Nano Plating renamed to Chelm's Modified Multispectrum Coating
Draclira's Modified Adaptive Nano Plating renamed to Draclira's Modified Multispectrum Coating
Brokara's Modified Kinetic Plating renamed to Brokara's Modified Kinetic Coating
Tairei's Modified Kinetic Plating renamed to Tairei's Modified Kinetic Coating
Selynne's Modified Kinetic Plating renamed to Selynne's Modified Kinetic Coating
Raysere's Modified Kinetic Plating renamed to Raysere's Modified Kinetic Coating
Vizan's Modified Kinetic Plating renamed to Vizan's Modified Kinetic Coating
Ahremen's Modified Kinetic Plating renamed to Ahremen's Modified Kinetic Coating
Chelm's Modified Kinetic Plating renamed to Chelm's Modified Kinetic Coating
Draclira's Modified Kinetic Plating renamed to Draclira's Modified Kinetic Coating
Brokara's Modified Explosive Plating renamed to Brokara's Modified Explosive Coating
Tairei's Modified Explosive Plating renamed to Tairei's Modified Explosive Coating
Selynne's Modified Explosive Plating renamed to Selynne's Modified Explosive Coating
Raysere's Modified Explosive Plating renamed to Raysere's Modified Explosive Coating
Vizan's Modified Explosive Plating renamed to Vizan's Modified Explosive Coating
Ahremen's Modified Explosive Plating renamed to Ahremen's Modified Explosive Coating
Chelm's Modified Explosive Plating renamed to Chelm's Modified Explosive Coating
Draclira's Modified Explosive Plating renamed to Draclira's Modified Explosive Coating
Brokara's Modified EM Plating renamed to Brokara's Modified EM Coating
Tairei's Modified EM Plating renamed to Tairei's Modified EM Coating
Selynne's Modified EM Plating renamed to Selynne's Modified EM Coating
Raysere's Modified EM Plating renamed to Raysere's Modified EM Coating
Vizan's Modified EM Plating renamed to Vizan's Modified EM Coating
Ahremen's Modified EM Plating renamed to Ahremen's Modified EM Coating
Chelm's Modified EM Plating renamed to Chelm's Modified EM Coating
Draclira's Modified EM Plating renamed to Draclira's Modified EM Coating
Brokara's Modified Thermal Plating renamed to Brokara's Modified Thermal Coating
Tairei's Modified Thermal Plating renamed to Tairei's Modified Thermal Coating
Selynne's Modified Thermal Plating renamed to Selynne's Modified Thermal Coating
Raysere's Modified Thermal Plating renamed to Raysere's Modified Thermal Coating
Vizan's Modified Thermal Plating renamed to Vizan's Modified Thermal Coating
Ahremen's Modified Thermal Plating renamed to Ahremen's Modified Thermal Coating
Chelm's Modified Thermal Plating renamed to Chelm's Modified Thermal Coating
Draclira's Modified Thermal Plating renamed to Draclira's Modified Thermal Coating
Brynn's Modified Adaptive Nano Plating renamed to Brynn's Modified Multispectrum Coating
Tuvan's Modified Adaptive Nano Plating renamed to Tuvan's Modified Multispectrum Coating
Setele's Modified Adaptive Nano Plating renamed to Setele's Modified Multispectrum Coating
Cormack's Modified Adaptive Nano Plating renamed to Cormack's Modified Multispectrum Coating
Brynn's Modified Thermal Plating renamed to Brynn's Modified Thermal Coating
Tuvan's Modified Thermal Plating renamed to Tuvan's Modified Thermal Coating
Setele's Modified Thermal Plating renamed to Setele's Modified Thermal Coating
Cormack's Modified Thermal Plating renamed to Cormack's Modified Thermal Coating
Brynn's Modified EM Plating renamed to Brynn's Modified EM Coating
Tuvan's Modified EM Plating renamed to Tuvan's Modified EM Coating
Setele's Modified EM Plating renamed to Setele's Modified EM Coating
Cormack's Modified EM Plating renamed to Cormack's Modified EM Coating
Brynn's Modified Explosive Plating renamed to Brynn's Modified Explosive Coating
Tuvan's Modified Explosive Plating renamed to Tuvan's Modified Explosive Coating
Setele's Modified Explosive Plating renamed to Setele's Modified Explosive Coating
Cormack's Modified Explosive Plating renamed to Cormack's Modified Explosive Coating
Brynn's Modified Kinetic Plating renamed to Brynn's Modified Kinetic Coating
Tuvan's Modified Kinetic Plating renamed to Tuvan's Modified Kinetic Coating
Setele's Modified Kinetic Plating renamed to Setele's Modified Kinetic Coating
Cormack's Modified Kinetic Plating renamed to Cormack's Modified Kinetic Coating
Imperial Navy Thermal Plating renamed to Imperial Navy Thermal Coating
Imperial Navy EM Plating renamed to Imperial Navy EM Coating
Imperial Navy Explosive Plating renamed to Imperial Navy Explosive Coating
Imperial Navy Kinetic Plating renamed to Imperial Navy Kinetic Coating
Imperial Navy Adaptive Nano Plating renamed to Imperial Navy Multispectrum Coating
Republic Fleet Thermal Plating renamed to Republic Fleet Thermal Coating
Republic Fleet EM Plating renamed to Republic Fleet EM Coating
Republic Fleet Explosive Plating renamed to Republic Fleet Explosive Coating
Republic Fleet Kinetic Plating renamed to Republic Fleet Kinetic Coating
Republic Fleet Adaptive Nano Plating renamed to Republic Fleet Multispectrum Coating
Upgraded Adaptive Nano Plating I renamed to Upgraded Multispectrum Coating I
Upgraded Kinetic Plating I renamed to Upgraded Kinetic Coating I
Upgraded Explosive Plating I renamed to Upgraded Explosive Coating I
Upgraded EM Plating I renamed to Upgraded EM Coating I
Upgraded Thermal Plating I renamed to Upgraded Thermal Coating I
Upgraded Layered Plating I renamed to Upgraded Layered Coating I
Ammatar Navy Kinetic Plating renamed to Ammatar Navy Kinetic Coating
Ammatar Navy Adaptive Nano Plating renamed to Ammatar Navy Multispectrum Coating
Ammatar Navy Explosive Plating renamed to Ammatar Navy Explosive Coating
Ammatar Navy EM Plating renamed to Ammatar Navy EM Coating
Federation Navy Adaptive Nano Plating renamed to Federation Navy Multispectrum Coating
Federation Navy Kinetic Plating renamed to Federation Navy Kinetic Coating
Federation Navy Explosive Plating renamed to Federation Navy Explosive Coating
Federation Navy EM Plating renamed to Federation Navy EM Coating
Federation Navy Thermal Plating renamed to Federation Navy Thermal Coating
Corpii C-Type Adaptive Nano Plating renamed to Corpii C-Type Multispectrum Coating
Centii C-Type Adaptive Nano Plating renamed to Centii C-Type Multispectrum Coating
Corpii B-Type Adaptive Nano Plating renamed to Corpii B-Type Multispectrum Coating
Centii B-Type Adaptive Nano Plating renamed to Centii B-Type Multispectrum Coating
Corpii A-Type Adaptive Nano Plating renamed to Corpii A-Type Multispectrum Coating
Centii A-Type Adaptive Nano Plating renamed to Centii A-Type Multispectrum Coating
Corpii C-Type Kinetic Plating renamed to Corpii C-Type Kinetic Coating
Centii C-Type Kinetic Plating renamed to Centii C-Type Kinetic Coating
Corpii C-Type Explosive Plating renamed to Corpii C-Type Explosive Coating
Centii C-Type Explosive Plating renamed to Centii C-Type Explosive Coating
Corpii C-Type EM Plating renamed to Corpii C-Type EM Coating
Centii C-Type EM Plating renamed to Centii C-Type EM Coating
Corpii C-Type Thermal Plating renamed to Corpii C-Type Thermal Coating
Centii C-Type Thermal Plating renamed to Centii C-Type Thermal Coating
Corpii B-Type Thermal Plating renamed to Corpii B-Type Thermal Coating
Centii B-Type Thermal Plating renamed to Centii B-Type Thermal Coating
Corpii B-Type Kinetic Plating renamed to Corpii B-Type Kinetic Coating
Centii B-Type Kinetic Plating renamed to Centii B-Type Kinetic Coating
Corpii B-Type Explosive Plating renamed to Corpii B-Type Explosive Coating
Centii B-Type Explosive Plating renamed to Centii B-Type Explosive Coating
Corpii B-Type EM Plating renamed to Corpii B-Type EM Coating
Centii B-Type EM Plating renamed to Centii B-Type EM Coating
Corpii A-Type Kinetic Plating renamed to Corpii A-Type Kinetic Coating
Centii A-Type Kinetic Plating renamed to Centii A-Type Kinetic Coating
Corpii A-Type Explosive Plating renamed to Corpii A-Type Explosive Coating
Centii A-Type Explosive Plating renamed to Centii A-Type Explosive Coating
Corpii A-Type EM Plating renamed to Corpii A-Type EM Coating
Centii A-Type EM Plating renamed to Centii A-Type EM Coating
Corpii A-Type Thermal Plating renamed to Corpii A-Type Thermal Coating
Centii A-Type Thermal Plating renamed to Centii A-Type Thermal Coating
Coreli C-Type Adaptive Nano Plating renamed to Coreli C-Type Multispectrum Coating
Coreli C-Type Kinetic Plating renamed to Coreli C-Type Kinetic Coating
Coreli C-Type Explosive Plating renamed to Coreli C-Type Explosive Coating
Coreli C-Type EM Plating renamed to Coreli C-Type EM Coating
Coreli C-Type Thermal Plating renamed to Coreli C-Type Thermal Coating
Coreli B-Type Adaptive Nano Plating renamed to Coreli B-Type Multispectrum Coating
Coreli B-Type Kinetic Plating renamed to Coreli B-Type Kinetic Coating
Coreli B-Type Explosive Plating renamed to Coreli B-Type Explosive Coating
Coreli B-Type EM Plating renamed to Coreli B-Type EM Coating
Coreli B-Type Thermal Plating renamed to Coreli B-Type Thermal Coating
Coreli A-Type Adaptive Nano Plating renamed to Coreli A-Type Multispectrum Coating
Coreli A-Type Kinetic Plating renamed to Coreli A-Type Kinetic Coating
Coreli A-Type Explosive Plating renamed to Coreli A-Type Explosive Coating
Coreli A-Type EM Plating renamed to Coreli A-Type EM Coating
Coreli A-Type Thermal Plating renamed to Coreli A-Type Thermal Coating
Khanid Navy Adaptive Nano Plating renamed to Khanid Navy Multispectrum Coating
Khanid Navy Kinetic Plating renamed to Khanid Navy Kinetic Coating
Khanid Navy Explosive Plating renamed to Khanid Navy Explosive Coating
Khanid Navy EM Plating renamed to Khanid Navy EM Coating
Khanid Navy Thermal Plating renamed to Khanid Navy Thermal Coating
Ammatar Navy Thermal Plating renamed to Ammatar Navy Thermal Coating
Low-Grade Mimesis Alpha renamed to Low-grade Mimesis Alpha
Low-Grade Mimesis Beta renamed to Low-grade Mimesis Beta
Low-Grade Mimesis Gamma renamed to Low-grade Mimesis Gamma
Low-Grade Mimesis Delta renamed to Low-grade Mimesis Delta
Low-Grade Mimesis Epsilon renamed to Low-grade Mimesis Epsilon
Low-Grade Mimesis Omega renamed to Low-grade Mimesis Omega
Mid-Grade Mimesis Alpha renamed to Mid-grade Mimesis Alpha
Mid-Grade Mimesis Beta renamed to Mid-grade Mimesis Beta
Mid-Grade Mimesis Gamma renamed to Mid-grade Mimesis Gamma
Mid-Grade Mimesis Delta renamed to Mid-grade Mimesis Delta
Mid-Grade Mimesis Epsilon renamed to Mid-grade Mimesis Epsilon
Mid-Grade Mimesis Omega renamed to Mid-grade Mimesis Omega
High-Grade Mimesis Alpha renamed to High-grade Mimesis Alpha
High-Grade Mimesis Beta renamed to High-grade Mimesis Beta
High-Grade Mimesis Delta renamed to High-grade Mimesis Delta
High-Grade Mimesis Epsilon renamed to High-grade Mimesis Epsilon
High-Grade Mimesis Gamma renamed to High-grade Mimesis Gamma
High-Grade Mimesis Omega renamed to High-grade Mimesis Omega
'Stalwart' Particle Field Magnifier renamed to Stalwart Restrained Shield Boost Amplifier
'Copasetic' Particle Field Acceleration renamed to Copasetic Compact Shield Boost Amplifier
5a Prototype Shield Support I converted to Stalwart Restrained Shield Boost Amplifier
Ionic Field Accelerator I converted to Copasetic Compact Shield Boost Amplifier
"""
def main(old, new):

View File

@@ -0,0 +1,194 @@
"""
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",
}

View File

@@ -1,5 +1,5 @@
"""
Conversion pack for May 2020 release
Conversion pack for July 2020 release
"""
CONVERSIONS = {

View File

@@ -1,5 +1,5 @@
"""
Conversion pack for May 2020 release
Conversion pack for June 2020 release
"""
CONVERSIONS = {

View File

@@ -0,0 +1,12 @@
"""
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"
}

View File

@@ -447,7 +447,7 @@ class Fit:
dp = sDP.getDamagePattern("Selected Ammo")
if dp is None:
dp = es_DamagePattern()
dp.name = "Selected Ammo"
dp.rawName = "Selected Ammo"
fit = eos.db.getFit(fitID)
for attr in ("em", "thermal", "kinetic", "explosive"):

View File

@@ -580,13 +580,19 @@ anti\-:
# Armor modules
eanm:
- 'eanm'
- 'energized adaptive nano membrane'
- 'multispectrum energized membrane'
enam: # mistype of "eanm"
- 'enam'
- 'energized adaptive nano membrane'
- 'multispectrum energized membrane'
mem:
- 'mem'
- 'multispectrum energized membrane'
anp:
- 'anp'
- 'multispectrum coating'
mc:
- 'mc'
- 'multispectrum coating'
plating:
- 'plating'
- 'coating'
@@ -621,6 +627,15 @@ laar:
caar:
- 'caar'
- 'capital ancillary (.+ )?(?<!remote )armor repairer'
25k:
- '25k'
- '25000'
25kmm:
- '25kmm'
- '25000mm'
25m:
- '25m'
- '25000mm'
# Hull modules
dc:
@@ -643,6 +658,18 @@ cehe:
- 'capital (.+ )?emergency hull energizer'
# Propulsion modules and upgrades
10k:
- '10k'
- '10000'
10kmn:
- '10kmn'
- '10000mn'
50k:
- '50k'
- '50000'
50kmn:
- '50kmn'
- '50000mn'
ab:
- '(^| )ab' # Checking only beginning of a word to remove unwanted spam
- 'afterburner'

View File

@@ -598,7 +598,7 @@ def _importCreateFit(lines):
"""Create fit and set top-level entity (ship or citadel)."""
fit = Fit()
header = lines.pop(0)
m = re.match('\[(?P<shipType>[\w\s]+),\s*(?P<fitName>.+)\]', header)
m = re.match('\[(?P<shipType>[^,]+),\s*(?P<fitName>.+)\]', header)
if not m:
pyfalog.warning('service.port.eft.importEft: corrupted fit header')
raise EftImportError

View File

@@ -7353,8 +7353,7 @@
"displayName": "Meta Level",
"displayNameID": 233633,
"highIsGood": 1,
"iconID": 0,
"name": "metaLevel",
"name": "metaLevelOld",
"published": 1,
"stackable": 1,
"unitID": 140
@@ -25853,7 +25852,7 @@
"displayName": "Missile Damage Bonus",
"displayNameID": 311932,
"highIsGood": 1,
"iconID": 0,
"iconID": 1397,
"name": "siegeMissileDamageBonus",
"published": 1,
"stackable": 1,
@@ -26320,7 +26319,7 @@
"displayName": "Armor Repairer / Shield Booster Duration Bonus",
"displayNameID": 312084,
"highIsGood": 1,
"iconID": 0,
"iconID": 2104,
"name": "siegeLocalLogisticsDurationBonus",
"published": 1,
"stackable": 1,
@@ -26335,7 +26334,7 @@
"displayName": "Armor Repairer / Shield Booster Amount Bonus",
"displayNameID": 312085,
"highIsGood": 1,
"iconID": 0,
"iconID": 2104,
"name": "siegeLocalLogisticsAmountBonus",
"published": 1,
"stackable": 1,
@@ -32546,5 +32545,50 @@
"name": "showSystemInfoBubble",
"published": 0,
"stackable": 0
},
"3095": {
"attributeID": 3095,
"categoryID": 7,
"dataType": 5,
"defaultValue": 0.0,
"displayName": "Probe Strength Bonus",
"displayNameID": 568981,
"highIsGood": 1,
"name": "scanProbeStrengthBonus",
"published": 1,
"stackable": 0,
"unitID": 105
},
"3098": {
"attributeID": 3098,
"dataType": 5,
"defaultValue": 0.0,
"highIsGood": 0,
"name": "armorRepairDurationBonus",
"published": 0,
"stackable": 0
},
"3099": {
"attributeID": 3099,
"dataType": 5,
"defaultValue": 0.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": "Quantum Core Type",
"displayNameID": 569361,
"highIsGood": 0,
"name": "structureRequiresDeedType",
"published": 1,
"stackable": 0,
"unitID": 116
}
}

View File

@@ -40835,8 +40835,6 @@
"rangeChance": 0
},
"5229": {
"description": "Automatically generated effect",
"descriptionID": 286583,
"disallowAutoRepeat": 0,
"effectCategory": 0,
"effectID": 5229,
@@ -77788,9 +77786,8 @@
"disallowAutoRepeat": 0,
"effectCategory": 7,
"effectID": 7237,
"effectName": "\tsystemWarpSpeed",
"effectName": "systemWarpSpeedBonus",
"electronicChance": 0,
"guid": "",
"isAssistance": 0,
"isOffensive": 0,
"isWarpSafe": 0,
@@ -79226,5 +79223,325 @@
"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
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -2528,11 +2528,11 @@
"parentGroupID": 14
},
"541": {
"description": "An advanced form of mechanically enhanced armor plating upgrades.",
"description": "Energized Armor Resistance Membranes",
"descriptionID": 64723,
"hasTypes": 0,
"iconID": 2066,
"name": "Energized Plating",
"name": "Energized Armor Resistance Membranes",
"nameID": 65797,
"parentGroupID": 14
},
@@ -9051,11 +9051,11 @@
"parentGroupID": 214
},
"1543": {
"description": "Blueprints for Energized Plating",
"description": "Blueprints for Energized Armor Membranes",
"descriptionID": 281321,
"hasTypes": 1,
"iconID": 2703,
"name": "Energized Plating",
"name": "Energized Armor Membranes",
"nameID": 281320,
"parentGroupID": 214
},
@@ -9989,56 +9989,56 @@
"parentGroupID": 535
},
"1682": {
"description": "Energized Explosive Plating",
"description": "Explosive Energized Membranes",
"descriptionID": 285386,
"hasTypes": 1,
"iconID": 1395,
"name": "Energized Explosive Plating",
"name": "Explosive Energized Membranes",
"nameID": 285385,
"parentGroupID": 541
},
"1683": {
"description": "Energized Thermal Plating",
"description": "Thermal Energized Membranes",
"descriptionID": 285388,
"hasTypes": 1,
"iconID": 1394,
"name": "Energized Thermal Plating",
"name": "Thermal Energized Membranes",
"nameID": 285387,
"parentGroupID": 541
},
"1684": {
"description": "Energized EM Plating",
"description": "EM Energized Membranes",
"descriptionID": 285390,
"hasTypes": 1,
"iconID": 1396,
"name": "Energized EM Plating",
"name": "EM Energized Membranes",
"nameID": 285389,
"parentGroupID": 541
},
"1685": {
"description": "Energized Kinetic Plating",
"description": "Kinetic Energized Membranes",
"descriptionID": 285392,
"hasTypes": 1,
"iconID": 1393,
"name": "Energized Kinetic Plating",
"name": "Kinetic Energized Membranes",
"nameID": 285391,
"parentGroupID": 541
},
"1686": {
"description": "Energized Adaptive Plating",
"description": "Multispectrum Energized Membranes",
"descriptionID": 285394,
"hasTypes": 1,
"iconID": 2066,
"name": "Energized Adaptive Plating",
"name": "Multispectrum Energized Membranes",
"nameID": 285393,
"parentGroupID": 541
},
"1687": {
"description": "Energized Armor Layering",
"description": "Layered Energized Armor Membranes",
"descriptionID": 285396,
"hasTypes": 1,
"iconID": 2066,
"name": "Energized Armor Layering",
"name": "Layered Energized Armor Membranes",
"nameID": 285395,
"parentGroupID": 14
},
@@ -16182,5 +16182,54 @@
"name": "Proving Ground Filaments",
"nameID": 567624,
"parentGroupID": 2456
},
"2749": {
"description": "Quantum Cores are FTL communications facillities vital to the efficient operation of Upwell structures.",
"descriptionID": 569752,
"hasTypes": 1,
"iconID": 21729,
"name": "Quantum Cores",
"nameID": 569644,
"parentGroupID": 2202
},
"2750": {
"description": "Capital Astronautic Mutaplasmids",
"descriptionID": 569939,
"hasTypes": 1,
"name": "Capital Astronautic Mutaplasmids",
"nameID": 569938,
"parentGroupID": 2439
},
"2751": {
"description": "Capital Armor Mutaplasmids",
"descriptionID": 569941,
"hasTypes": 1,
"name": "Capital Armor Mutaplasmids",
"nameID": 569940,
"parentGroupID": 2437
},
"2752": {
"description": "Capital Shield Mutaplasmids",
"descriptionID": 569944,
"hasTypes": 1,
"name": "Capital Shield Mutaplasmids",
"nameID": 569943,
"parentGroupID": 2438
},
"2753": {
"description": "Capital Engineering Mutaplasmids",
"descriptionID": 569946,
"hasTypes": 1,
"name": "Capital Engineering Mutaplasmids",
"nameID": 569945,
"parentGroupID": 2440
},
"2754": {
"description": "Siege Module Mutaplasmids",
"descriptionID": 569952,
"hasTypes": 1,
"name": "Siege Module Mutaplasmids",
"nameID": 569951,
"parentGroupID": 2512
}
}

View File

@@ -19957,6 +19957,21 @@
"33529": {
"3411": 5
},
"33530": {
"21718": 1
},
"33531": {
"21718": 1
},
"33532": {
"21718": 1
},
"33533": {
"21718": 1
},
"33534": {
"21718": 1
},
"33553": {
"3332": 2,
"3335": 2
@@ -25595,6 +25610,12 @@
"55859": {
"3402": 1
},
"55860": {
"3394": 3
},
"55862": {
"3394": 3
},
"55927": {
"3402": 1
},
@@ -25624,5 +25645,79 @@
},
"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": 1
},
"56362": {
"11584": 1
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1373,39 +1373,33 @@
},
"80": {
"aggregateMode": "Minimum",
"developerDescription": "AOE_Beacon_caustic_cloud_local_repair",
"displayName": "Local Armor Repairer penalty",
"developerDescription": "AOE_Beacon_caustic_cloud_inertia",
"displayName": "Inertia Bonus",
"displayNameID": 532902,
"itemModifiers": [],
"locationGroupModifiers": [],
"locationModifiers": [],
"locationRequiredSkillModifiers": [
"itemModifiers": [
{
"dogmaAttributeID": 84,
"skillID": 3393
"dogmaAttributeID": 70
}
],
"locationGroupModifiers": [],
"locationModifiers": [],
"locationRequiredSkillModifiers": [],
"operationName": "PostPercent",
"showOutputValueInUI": "ShowNormal"
},
"81": {
"aggregateMode": "Minimum",
"developerDescription": "AOE_Beacon_caustic_cloud_remote_repair",
"displayName": "Remote Armor Repairer penalty",
"developerDescription": "AOE_Beacon_caustic_cloud_velocity",
"displayName": "Max Velocity Bonus",
"displayNameID": 532901,
"itemModifiers": [
{
"dogmaAttributeID": 84
"dogmaAttributeID": 37
}
],
"locationGroupModifiers": [],
"locationModifiers": [],
"locationRequiredSkillModifiers": [
{
"dogmaAttributeID": 84,
"skillID": 16069
}
],
"locationRequiredSkillModifiers": [],
"operationName": "PostPercent",
"showOutputValueInUI": "ShowNormal"
},

View File

@@ -8450,7 +8450,7 @@
"categoryID": 7,
"fittableNonSingleton": false,
"groupID": 326,
"groupName": "Armor Plating Energized",
"groupName": "Energized Armor Membrane",
"groupNameID": 63791,
"iconID": 0,
"published": true,
@@ -9791,6 +9791,17 @@
"published": true,
"useBasePrice": true
},
"4086": {
"anchorable": false,
"anchored": false,
"categoryID": 66,
"fittableNonSingleton": false,
"groupID": 4086,
"groupName": "Quantum Cores",
"groupNameID": 569641,
"published": true,
"useBasePrice": true
},
"409": {
"anchorable": false,
"anchored": false,

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,10 @@
[
{
"field_name": "client_build",
"field_value": 1777281
"field_value": 1805757
},
{
"field_name": "dump_time",
"field_value": 1595924073
"field_value": 1600240135
}
]

View File

@@ -159,6 +159,36 @@
},
"typeID": 22466
},
{
"traits": {
"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:"
}
},
"typeID": 56059
},
{
"traits": {
"role": {
@@ -1101,34 +1131,30 @@
"misc": {
"bonuses": [
{
"number": "44%",
"text": "bonus to ship velocity"
"number": "10%",
"text": "reduction in ship kinetic resistances"
},
{
"number": "44%",
"text": "bonus to maximum targeting range"
"number": "20%",
"text": "bonus to ship scan resolution"
},
{
"number": "22%",
"text": "bonus to missile velocity"
"number": "10%",
"text": "bonus to mining laser cycle speed"
},
{
"number": "44%",
"text": "bonus to missile explosion velocity"
"number": "10%",
"text": "bonus to local Armor Repairer and Shield Booster cycle speed"
},
{
"number": "22%",
"text": "penalty to ship agility"
},
{
"number": "22%",
"text": "penalty to stasis webifier strength"
"number": "40%",
"text": "bonus to ship warp speed"
}
],
"header": "Misc bonus:"
}
},
"typeID": 30850
"typeID": 56058
},
{
"traits": {
@@ -1312,6 +1338,35 @@
},
"typeID": 598
},
{
"traits": {
"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:"
}
},
"typeID": 56057
},
{
"traits": {
"role": {
@@ -2489,6 +2544,40 @@
},
"typeID": 28710
},
{
"traits": {
"misc": {
"bonuses": [
{
"number": "44%",
"text": "bonus to ship velocity"
},
{
"number": "44%",
"text": "bonus to maximum targeting range"
},
{
"number": "22%",
"text": "bonus to missile velocity"
},
{
"number": "44%",
"text": "bonus to missile explosion velocity"
},
{
"number": "22%",
"text": "penalty to ship agility"
},
{
"number": "22%",
"text": "penalty to stasis webifier strength"
}
],
"header": "Misc bonus:"
}
},
"typeID": 30850
},
{
"traits": {
"skills": [
@@ -5545,6 +5634,9 @@
},
{
"text": "·While this structure has at least one online service module it enters full power mode and will gain increased shield and armor hitpoints and an extra reinforcement cycle"
},
{
"text": "·This structure requires an Astrahus Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -5599,6 +5691,9 @@
},
{
"text": "·While this structure has at least one online service module it enters full power mode and will gain increased shield and armor hitpoints and an extra reinforcement cycle"
},
{
"text": "·This structure requires a Keepstar Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -5626,6 +5721,9 @@
},
{
"text": "·While this structure has at least one online service module it enters full power mode and will gain increased shield and armor hitpoints and an extra reinforcement cycle."
},
{
"text": "·This structure requires an Athanor Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -5661,6 +5759,9 @@
},
{
"text": "·While this structure has at least one online service module it enters full power mode and will gain increased shield and armor hitpoints and an extra reinforcement cycle."
},
{
"text": "·This structure requires a Tatara Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -6655,7 +6756,7 @@
{
"bonuses": [
{
"number": "15%",
"number": "30%",
"text": "bonus to Light Entropic Disintegrator optimal range"
},
{
@@ -10242,6 +10343,9 @@
},
{
"text": "·This structure is able to maintain a low-power state indefinitely, and so will not lapse to into an abandoned state."
},
{
"text": "·This structure requires a Fortizar Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -10278,6 +10382,9 @@
},
{
"text": "·This structure is able to maintain a low-power state indefinitely, and so will not lapse to into an abandoned state."
},
{
"text": "·This structure requires a Fortizar Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -10310,6 +10417,9 @@
},
{
"text": "·This structure is able to maintain a low-power state indefinitely, and so will not lapse to into an abandoned state."
},
{
"text": "·This structure requires a Fortizar Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -10346,6 +10456,9 @@
},
{
"text": "·This structure is able to maintain a low-power state indefinitely, and so will not lapse to into an abandoned state."
},
{
"text": "·This structure requires a Fortizar Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -10374,6 +10487,9 @@
},
{
"text": "·This structure is able to maintain a low-power state indefinitely, and so will not lapse to into an abandoned state."
},
{
"text": "·This structure requires a Fortizar Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -12003,6 +12119,9 @@
},
{
"text": "·While this structure has at least one online service module it enters full power mode and will gain increased shield and armor hitpoints and an extra reinforcement cycle"
},
{
"text": "·This structure requires a Fortizar Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -16219,6 +16338,9 @@
},
{
"text": "·Only one Upwell Palatine Keepstar may be deployed at a time in New Eden"
},
{
"text": "·This structure requires a Keepstar Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -16226,6 +16348,26 @@
},
"typeID": 40340
},
{
"traits": {
"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):"
}
]
},
"typeID": 34443
},
{
"traits": {
"role": {
@@ -16480,6 +16622,26 @@
},
"typeID": 23913
},
{
"traits": {
"skills": [
{
"bonuses": [
{
"number": "10%",
"text": "bonus to Drone hitpoints and damage"
},
{
"number": "7.5%",
"text": "bonus to Drone optimal range and tracking speed"
}
],
"header": "Gallente Battleship bonuses (per skill level):"
}
]
},
"typeID": 34441
},
{
"traits": {
"role": {
@@ -20144,43 +20306,152 @@
},
{
"traits": {
"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):"
}
]
"misc": {
"bonuses": [
{
"number": "10%",
"text": "reduction in ship explosive resistances"
},
{
"number": "10%",
"text": "bonus to ship shield hitpoints"
},
{
"number": "10%",
"text": "bonus to ship capacitor capacity"
},
{
"number": "10%",
"text": "reduction in ship signature radius"
},
{
"number": "50%",
"text": "reduction in Remote Armor Repairer and Remote Shield Booster effectiveness"
}
],
"header": "Misc bonus:"
}
},
"typeID": 34443
"typeID": 56060
},
{
"traits": {
"skills": [
{
"bonuses": [
{
"number": "10%",
"text": "bonus to Drone hitpoints and damage"
},
{
"number": "7.5%",
"text": "bonus to Drone optimal range and tracking speed"
}
],
"header": "Gallente Battleship bonuses (per skill level):"
}
]
"misc": {
"bonuses": [
{
"number": "25%",
"text": "reduction in ship explosive resistances"
},
{
"number": "25%",
"text": "bonus to ship shield hitpoints"
},
{
"number": "25%",
"text": "bonus to ship capacitor capacity"
},
{
"number": "25%",
"text": "reduction in ship signature radius"
},
{
"number": "90%",
"text": "reduction in Remote Armor Repairer and Remote Shield Booster effectiveness"
}
],
"header": "Misc bonus:"
}
},
"typeID": 34441
"typeID": 56061
},
{
"traits": {
"misc": {
"bonuses": [
{
"number": "10%",
"text": "reduction in ship thermal resistances"
},
{
"number": "10%",
"text": "bonus to ship armor hitpoints"
},
{
"number": "20%",
"text": "bonus to turret, missile, drone, and fighter damage"
},
{
"number": "20%",
"text": "reduction in turret and drone tracking speed"
},
{
"number": "20%",
"text": "increase to missile and fighter explosion radius"
}
],
"header": "Misc bonus:"
}
},
"typeID": 56062
},
{
"traits": {
"misc": {
"bonuses": [
{
"number": "25%",
"text": "reduction in ship thermal resistances"
},
{
"number": "25%",
"text": "bonus to ship armor hitpoints"
},
{
"number": "50%",
"text": "bonus to turret, missile, drone, and fighter damage"
},
{
"number": "50%",
"text": "reduction in turret and drone tracking speed"
},
{
"number": "50%",
"text": "increase to missile and fighter explosion radius"
}
],
"header": "Misc bonus:"
}
},
"typeID": 56063
},
{
"traits": {
"misc": {
"bonuses": [
{
"number": "10%",
"text": "reduction in ship EM resistances"
},
{
"number": "10%",
"text": "bonus to ship capacitor recharge rate"
},
{
"number": "10+",
"text": "bonus to Relic and Data Analyzer virus coherence"
},
{
"number": "20%",
"text": "bonus to Core and Combat Scanner Probe strength"
},
{
"text": "·Cloaking devices cannot operate within systems affected by this storm"
}
],
"header": "Misc bonus:"
}
},
"typeID": 56064
},
{
"traits": {
@@ -20274,8 +20545,8 @@
"text": "bonus to Heavy Entropic Disintegrator damage"
},
{
"number": "5%",
"text": "bonus to Heavy Entropic Disintegrator tracking speed"
"number": "7.5%",
"text": "bonus to Heavy Entropic Disintegrator optimal range"
}
],
"header": "Precursor Cruiser bonuses (per skill level):"
@@ -20592,6 +20863,9 @@
},
{
"text": "·While this structure has at least one online service module it enters full power mode and will gain increased shield and armor hitpoints and an extra reinforcement cycle."
},
{
"text": "·This structure requires a Sotiyo Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -20625,6 +20899,9 @@
},
{
"text": "·While this structure has at least one online service module it enters full power mode and will gain increased shield and armor hitpoints and an extra reinforcement cycle."
},
{
"text": "·This structure requires an Azbel Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"
@@ -20654,6 +20931,9 @@
},
{
"text": "·While this structure has at least one online service module it enters full power mode and will gain increased shield and armor hitpoints and an extra reinforcement cycle."
},
{
"text": "·This structure requires a Raitaru Upwell Quantum Core to be installed for anchoring to complete"
}
],
"header": "Role Bonus:"

View File

@@ -1 +1 @@
version: v2.24.1
version: v2.28.2