Compare commits

...

48 Commits

Author SHA1 Message Date
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
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
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
27 changed files with 20643 additions and 815 deletions

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

@@ -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)
@@ -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'
@@ -12462,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'
@@ -12481,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'
@@ -12500,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'
@@ -12553,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'
@@ -12571,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'
@@ -12589,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'
@@ -12607,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'
@@ -12625,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'
@@ -12643,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'
@@ -12661,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'
@@ -13185,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'
@@ -13193,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):
@@ -13204,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'
@@ -13212,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):
@@ -13222,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'
@@ -13378,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'
@@ -13396,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'
@@ -13414,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'
@@ -16438,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'
@@ -16445,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):
@@ -23073,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'
@@ -23201,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'
@@ -23209,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):
@@ -23351,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'
@@ -26858,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)
@@ -26973,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)
@@ -27002,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):
@@ -27108,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):
@@ -31492,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)
@@ -31514,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):
@@ -35065,7 +35113,7 @@ class Effect7086(BaseEffect):
shipbonusPCTTrackingPC2
Used by:
Variations of ship: Vedmak (2 of 2)
Ship: Ikitursa
Ship: Tiamat
"""
@@ -35213,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
@@ -35772,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'
@@ -36086,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'
@@ -36272,13 +36357,7 @@ class Effect8020(BaseEffect):
systemWarpSpeedAddition
Used by:
Celestial: Strong Metaliminal Exotic Matter Storm
Celestial: Strong Metaliminal Gamma Ray Storm
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: System-Wide Warp Speed Bonus
Celestial: Weak Metaliminal Exotic Matter Storm
Celestial: Weak Metaliminal Gamma Ray Storm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
@@ -36880,6 +36959,22 @@ class Effect8073(BaseEffect):
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
@@ -36896,3 +36991,193 @@ class Effect8075(BaseEffect):
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

@@ -755,13 +755,11 @@ class Fit:
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"),

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

@@ -120,15 +120,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,9 +102,9 @@ 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['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')

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
@@ -931,7 +943,6 @@ class _TabsContainer(wx.Panel):
tb_renderer = self.tabs[tab]
tb_renderer.disabled = disabled
self.AdjustTabsSize()
self.Refresh()
def GetSelectedTab(self):

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

@@ -16,192 +16,10 @@ rename_phrase = " renamed to "
conversion_phrase = " converted to "
text = """
Basic Energized EM Membrane renamed to 'Basic' EM Energized Membrane
Energized EM Membrane I renamed to EM Energized Membrane I
Energized EM Membrane II renamed to EM Energized Membrane II
Basic Energized Explosive Membrane renamed to 'Basic' Explosive Energized Membrane
Energized Explosive Membrane I renamed to Explosive Energized Membrane I
Energized Explosive Membrane II renamed to Explosive Energized Membrane II
Basic Energized Armor Layering Membrane renamed to 'Basic' Layered Energized Membrane
Energized Armor Layering Membrane I renamed to Layered Energized Membrane I
Energized Armor Layering Membrane II renamed to Layered Energized Membrane II
Basic Energized Kinetic Membrane renamed to 'Basic' Kinetic Energized Membrane
Energized Kinetic Membrane I renamed to Kinetic Energized Membrane I
Energized Kinetic Membrane II renamed to Kinetic Energized Membrane II
Basic Energized Thermal Membrane renamed to 'Basic' Thermal Energized Membrane
Energized Thermal Membrane I renamed to Thermal Energized Membrane I
Energized Thermal Membrane II renamed to Thermal Energized Membrane II
Basic Energized Adaptive Nano Membrane renamed to 'Basic' Multispectrum Energized Membrane
Energized Adaptive Nano Membrane I renamed to Multispectrum Energized Membrane I
Energized Adaptive Nano Membrane II renamed to Multispectrum Energized Membrane II
Dark Blood Energized Adaptive Nano Membrane renamed to Dark Blood Multispectrum Energized Membrane
True Sansha Energized Adaptive Nano Membrane renamed to True Sansha Multispectrum Energized Membrane
Shadow Serpentis Energized Adaptive Nano Membrane renamed to Shadow Serpentis Multispectrum Energized Membrane
Dark Blood Energized Kinetic Membrane renamed to Dark Blood Kinetic Energized Membrane
True Sansha Energized Kinetic Membrane renamed to True Sansha Kinetic Energized Membrane
Shadow Serpentis Energized Kinetic Membrane renamed to Shadow Serpentis Kinetic Energized Membrane
Dark Blood Energized Explosive Membrane renamed to Dark Blood Explosive Energized Membrane
True Sansha Energized Explosive Membrane renamed to True Sansha Explosive Energized Membrane
Shadow Serpentis Energized Explosive Membrane renamed to Shadow Serpentis Explosive Energized Membrane
Dark Blood Energized EM Membrane renamed to Dark Blood EM Energized Membrane
True Sansha Energized EM Membrane renamed to True Sansha EM Energized Membrane
Shadow Serpentis Energized EM Membrane renamed to Shadow Serpentis EM Energized Membrane
Dark Blood Energized Thermal Membrane renamed to Dark Blood Thermal Energized Membrane
True Sansha Energized Thermal Membrane renamed to True Sansha Thermal Energized Membrane
Shadow Serpentis Energized Thermal Membrane renamed to Shadow Serpentis Thermal Energized Membrane
Brokara's Modified Energized Adaptive Nano Membrane renamed to Brokara's Modified Multispectrum Energized Membrane
Tairei's Modified Energized Adaptive Nano Membrane renamed to Tairei's Modified Multispectrum Energized Membrane
Selynne's Modified Energized Adaptive Nano Membrane renamed to Selynne's Modified Multispectrum Energized Membrane
Raysere's Modified Energized Adaptive Nano Membrane renamed to Raysere's Modified Multispectrum Energized Membrane
Vizan's Modified Energized Adaptive Nano Membrane renamed to Vizan's Modified Multispectrum Energized Membrane
Ahremen's Modified Energized Adaptive Nano Membrane renamed to Ahremen's Modified Multispectrum Energized Membrane
Chelm's Modified Energized Adaptive Nano Membrane renamed to Chelm's Modified Multispectrum Energized Membrane
Draclira's Modified Energized Adaptive Nano Membrane renamed to Draclira's Modified Multispectrum Energized Membrane
Brokara's Modified Energized Thermal Membrane renamed to Brokara's Modified Thermal Energized Membrane
Tairei's Modified Energized Thermal Membrane renamed to Tairei's Modified Thermal Energized Membrane
Selynne's Modified Energized Thermal Membrane renamed to Selynne's Modified Thermal Energized Membrane
Raysere's Modified Energized Thermal Membrane renamed to Raysere's Modified Thermal Energized Membrane
Vizan's Modified Energized Thermal Membrane renamed to Vizan's Modified Thermal Energized Membrane
Ahremen's Modified Energized Thermal Membrane renamed to Ahremen's Modified Thermal Energized Membrane
Chelm's Modified Energized Thermal Membrane renamed to Chelm's Modified Thermal Energized Membrane
Draclira's Modified Energized Thermal Membrane renamed to Draclira's Modified Thermal Energized Membrane
Brokara's Modified Energized EM Membrane renamed to Brokara's Modified EM Energized Membrane
Tairei's Modified Energized EM Membrane renamed to Tairei's Modified EM Energized Membrane
Selynne's Modified Energized EM Membrane renamed to Selynne's Modified EM Energized Membrane
Raysere's Modified Energized EM Membrane renamed to Raysere's Modified EM Energized Membrane
Vizan's Modified Energized EM Membrane renamed to Vizan's Modified EM Energized Membrane
Ahremen's Modified Energized EM Membrane renamed to Ahremen's Modified EM Energized Membrane
Chelm's Modified Energized EM Membrane renamed to Chelm's Modified EM Energized Membrane
Draclira's Modified Energized EM Membrane renamed to Draclira's Modified EM Energized Membrane
Brokara's Modified Energized Explosive Membrane renamed to Brokara's Modified Explosive Energized Membrane
Tairei's Modified Energized Explosive Membrane renamed to Tairei's Modified Explosive Energized Membrane
Selynne's Modified Energized Explosive Membrane renamed to Selynne's Modified Explosive Energized Membrane
Raysere's Modified Energized Explosive Membrane renamed to Raysere's Modified Explosive Energized Membrane
Vizan's Modified Energized Explosive Membrane renamed to Vizan's Modified Explosive Energized Membrane
Ahremen's Modified Energized Explosive Membrane renamed to Ahremen's Modified Explosive Energized Membrane
Chelm's Modified Energized Explosive Membrane renamed to Chelm's Modified Explosive Energized Membrane
Draclira's Modified Energized Explosive Membrane renamed to Draclira's Modified Explosive Energized Membrane
Brokara's Modified Energized Kinetic Membrane renamed to Brokara's Modified Kinetic Energized Membrane
Tairei's Modified Energized Kinetic Membrane renamed to Tairei's Modified Kinetic Energized Membrane
Selynne's Modified Energized Kinetic Membrane renamed to Selynne's Modified Kinetic Energized Membrane
Raysere's Modified Energized Kinetic Membrane renamed to Raysere's Modified Kinetic Energized Membrane
Vizan's Modified Energized Kinetic Membrane renamed to Vizan's Modified Kinetic Energized Membrane
Ahremen's Modified Energized Kinetic Membrane renamed to Ahremen's Modified Kinetic Energized Membrane
Chelm's Modified Energized Kinetic Membrane renamed to Chelm's Modified Kinetic Energized Membrane
Draclira's Modified Energized Kinetic Membrane renamed to Draclira's Modified Kinetic Energized Membrane
Brynn's Modified Energized Adaptive Nano Membrane renamed to Brynn's Modified Multispectrum Energized Membrane
Tuvan's Modified Energized Adaptive Nano Membrane renamed to Tuvan's Modified Multispectrum Energized Membrane
Setele's Modified Energized Adaptive Nano Membrane renamed to Setele's Modified Multispectrum Energized Membrane
Cormack's Modified Energized Adaptive Nano Membrane renamed to Cormack's Modified Multispectrum Energized Membrane
Brynn's Modified Energized Thermal Membrane renamed to Brynn's Modified Thermal Energized Membrane
Tuvan's Modified Energized Thermal Membrane renamed to Tuvan's Modified Thermal Energized Membrane
Setele's Modified Energized Thermal Membrane renamed to Setele's Modified Thermal Energized Membrane
Cormack's Modified Energized Thermal Membrane renamed to Cormack's Modified Thermal Energized Membrane
Brynn's Modified Energized EM Membrane renamed to Brynn's Modified EM Energized Membrane
Tuvan's Modified Energized EM Membrane renamed to Tuvan's Modified EM Energized Membrane
Setele's Modified Energized EM Membrane renamed to Setele's Modified EM Energized Membrane
Cormack's Modified Energized EM Membrane renamed to Cormack's Modified EM Energized Membrane
Brynn's Modified Energized Explosive Membrane renamed to Brynn's Modified Explosive Energized Membrane
Tuvan's Modified Energized Explosive Membrane renamed to Tuvan's Modified Explosive Energized Membrane
Setele's Modified Energized Explosive Membrane renamed to Setele's Modified Explosive Energized Membrane
Cormack's Modified Energized Explosive Membrane renamed to Cormack's Modified Explosive Energized Membrane
Brynn's Modified Energized Kinetic Membrane renamed to Brynn's Modified Kinetic Energized Membrane
Tuvan's Modified Energized Kinetic Membrane renamed to Tuvan's Modified Kinetic Energized Membrane
Setele's Modified Energized Kinetic Membrane renamed to Setele's Modified Kinetic Energized Membrane
Cormack's Modified Energized Kinetic Membrane renamed to Cormack's Modified Kinetic Energized Membrane
Imperial Navy Energized Thermal Membrane renamed to Imperial Navy Thermal Energized Membrane
Imperial Navy Energized EM Membrane renamed to Imperial Navy EM Energized Membrane
Imperial Navy Energized Explosive Membrane renamed to Imperial Navy Explosive Energized Membrane
Imperial Navy Energized Kinetic Membrane renamed to Imperial Navy Kinetic Energized Membrane
Imperial Navy Energized Adaptive Nano Membrane renamed to Imperial Navy Multispectrum Energized Membrane
Federation Navy Energized Thermal Membrane renamed to Federation Navy Thermal Energized Membrane
Federation Navy Energized EM Membrane renamed to Federation Navy EM Energized Membrane
Federation Navy Energized Explosive Membrane renamed to Federation Navy Explosive Energized Membrane
Federation Navy Energized Kinetic Membrane renamed to Federation Navy Kinetic Energized Membrane
Federation Navy Energized Adaptive Nano Membrane renamed to Federation Navy Multispectrum Energized Membrane
Prototype Energized Adaptive Nano Membrane I renamed to Compact Multispectrum Energized Membrane
Prototype Energized Kinetic Membrane I renamed to Compact Kinetic Energized Membrane
Prototype Energized Explosive Membrane I renamed to Compact Explosive Energized Membrane
Prototype Energized EM Membrane I renamed to Compact EM Energized Membrane
Prototype Energized Armor Layering Membrane I renamed to Compact Layered Energized Membrane
Prototype Energized Thermal Membrane I renamed to Compact Thermal Energized Membrane
Ammatar Navy Energized Adaptive Nano Membrane renamed to Ammatar Navy Multispectrum Energized Membrane
Ammatar Navy Energized Kinetic Membrane renamed to Ammatar Navy Kinetic Energized Membrane
Ammatar Navy Energized Explosive Membrane renamed to Ammatar Navy Explosive Energized Membrane
Ammatar Navy Energized EM Membrane renamed to Ammatar Navy EM Energized Membrane
Ammatar Navy Energized Thermal Membrane renamed to Ammatar Navy Thermal Energized Membrane
Corelum C-Type Energized Adaptive Nano Membrane renamed to Corelum C-Type Multispectrum Energized Membrane
Corelum C-Type Energized Kinetic Membrane renamed to Corelum C-Type Kinetic Energized Membrane
Corelum C-Type Energized Explosive Membrane renamed to Corelum C-Type Explosive Energized Membrane
Corelum C-Type Energized EM Membrane renamed to Corelum C-Type EM Energized Membrane
Corelum C-Type Energized Thermal Membrane renamed to Corelum C-Type Thermal Energized Membrane
Corelum B-Type Energized Adaptive Nano Membrane renamed to Corelum B-Type Multispectrum Energized Membrane
Corelum B-Type Energized Kinetic Membrane renamed to Corelum B-Type Kinetic Energized Membrane
Corelum B-Type Energized Explosive Membrane renamed to Corelum B-Type Explosive Energized Membrane
Corelum B-Type Energized EM Membrane renamed to Corelum B-Type EM Energized Membrane
Corelum B-Type Energized Thermal Membrane renamed to Corelum B-Type Thermal Energized Membrane
Corelum A-Type Energized Adaptive Nano Membrane renamed to Corelum A-Type Multispectrum Energized Membrane
Corelum A-Type Energized Kinetic Membrane renamed to Corelum A-Type Kinetic Energized Membrane
Corelum A-Type Energized Explosive Membrane renamed to Corelum A-Type Explosive Energized Membrane
Corelum A-Type Energized EM Membrane renamed to Corelum A-Type EM Energized Membrane
Corelum A-Type Energized Thermal Membrane renamed to Corelum A-Type Thermal Energized Membrane
Corpum C-Type Energized Adaptive Nano Membrane renamed to Corpum C-Type Multispectrum Energized Membrane
Centum C-Type Energized Adaptive Nano Membrane renamed to Centum C-Type Multispectrum Energized Membrane
Corpum C-Type Energized Kinetic Membrane renamed to Corpum C-Type Kinetic Energized Membrane
Centum C-Type Energized Kinetic Membrane renamed to Centum C-Type Kinetic Energized Membrane
Corpum C-Type Energized Explosive Membrane renamed to Corpum C-Type Explosive Energized Membrane
Centum C-Type Energized Explosive Membrane renamed to Centum C-Type Explosive Energized Membrane
Corpum C-Type Energized EM Membrane renamed to Corpum C-Type EM Energized Membrane
Centum C-Type Energized EM Membrane renamed to Centum C-Type EM Energized Membrane
Corpum C-Type Energized Thermal Membrane renamed to Corpum C-Type Thermal Energized Membrane
Centum C-Type Energized Thermal Membrane renamed to Centum C-Type Thermal Energized Membrane
Corpum B-Type Energized Adaptive Nano Membrane renamed to Corpum B-Type Multispectrum Energized Membrane
Centum B-Type Energized Adaptive Nano Membrane renamed to Centum B-Type Multispectrum Energized Membrane
Corpum B-Type Energized Kinetic Membrane renamed to Corpum B-Type Kinetic Energized Membrane
Centum B-Type Energized Kinetic Membrane renamed to Centum B-Type Kinetic Energized Membrane
Corpum B-Type Energized Explosive Membrane renamed to Corpum B-Type Explosive Energized Membrane
Centum B-Type Energized Explosive Membrane renamed to Centum B-Type Explosive Energized Membrane
Corpum B-Type Energized Thermal Membrane renamed to Corpum B-Type Thermal Energized Membrane
Centum B-Type Energized Thermal Membrane renamed to Centum B-Type Thermal Energized Membrane
Corpum A-Type Energized Thermal Membrane renamed to Corpum A-Type Thermal Energized Membrane
Centum A-Type Energized Thermal Membrane renamed to Centum A-Type Thermal Energized Membrane
Corpum A-Type Energized EM Membrane renamed to Corpum A-Type EM Energized Membrane
Centum A-Type Energized EM Membrane renamed to Centum A-Type EM Energized Membrane
Corpum A-Type Energized Explosive Membrane renamed to Corpum A-Type Explosive Energized Membrane
Centum A-Type Energized Explosive Membrane renamed to Centum A-Type Explosive Energized Membrane
Corpum A-Type Energized Kinetic Membrane renamed to Corpum A-Type Kinetic Energized Membrane
Centum A-Type Energized Kinetic Membrane renamed to Centum A-Type Kinetic Energized Membrane
Corpum A-Type Energized Adaptive Nano Membrane renamed to Corpum A-Type Multispectrum Energized Membrane
Centum A-Type Energized Adaptive Nano Membrane renamed to Centum A-Type Multispectrum Energized Membrane
Corpum B-Type Energized EM Membrane renamed to Corpum B-Type EM Energized Membrane
Centum B-Type Energized EM Membrane renamed to Centum B-Type EM Energized Membrane
'Pilfer' Energized Adaptive Nano Membrane I renamed to 'Pilfer' Multispectrum Energized Membrane
'Moonshine' Energized Thermal Membrane I renamed to 'Moonshine' Thermal Energized Membrane
'Mafia' Energized Kinetic Membrane I renamed to 'Mafia' Kinetic Energized Membrane
Khanid Navy Energized Adaptive Nano Membrane renamed to Khanid Navy Multispectrum Energized Membrane
Khanid Navy Energized Kinetic Membrane renamed to Khanid Navy Kinetic Energized Membrane
Khanid Navy Energized Explosive Membrane renamed to Khanid Navy Explosive Energized Membrane
Khanid Navy Energized EM Membrane renamed to Khanid Navy EM Energized Membrane
Khanid Navy Energized Thermal Membrane renamed to Khanid Navy Thermal Energized Membrane
Large Compact Vorton projector renamed to Large Compact Vorton Projector
Experimental Energized Adaptive Nano Membrane I converted to Compact Multispectrum Energized Membrane
Experimental Energized Armor Layering Membrane I converted to Compact Layered Energized Membrane
Experimental Energized EM Membrane I converted to Compact EM Energized Membrane
Experimental Energized Explosive Membrane I converted to Compact Explosive Energized Membrane
Experimental Energized Kinetic Membrane I converted to Compact Kinetic Energized Membrane
Experimental Energized Thermal Membrane I converted to Compact Thermal Energized Membrane
Limited Energized Adaptive Nano Membrane I converted to Compact Multispectrum Energized Membrane
Limited Energized Armor Layering Membrane I converted to Compact Layered Energized Membrane
Limited Energized EM Membrane I converted to Compact EM Energized Membrane
Limited Energized Explosive Membrane I converted to Compact Explosive Energized Membrane
Limited Energized Kinetic Membrane I converted to Compact Kinetic Energized Membrane
Limited Energized Thermal Membrane I converted to Compact Thermal Energized Membrane
Upgraded Energized Adaptive Nano Membrane I converted to Compact Multispectrum Energized Membrane
Upgraded Energized Armor Layering Membrane I converted to Compact Layered Energized Membrane
Upgraded Energized EM Membrane I converted to Compact EM Energized Membrane
Upgraded Energized Explosive Membrane I converted to Compact Explosive Energized Membrane
Upgraded Energized Kinetic Membrane I converted to Compact Kinetic Energized Membrane
Upgraded Energized Thermal Membrane I converted to Compact Thermal Energized Membrane
'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,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

@@ -627,6 +627,15 @@ laar:
caar:
- 'caar'
- 'capital ancillary (.+ )?(?<!remote )armor repairer'
25k:
- '25k'
- '25000'
25kmm:
- '25kmm'
- '25000mm'
25m:
- '25m'
- '25000mm'
# Hull modules
dc:
@@ -649,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,
@@ -32559,5 +32558,37 @@
"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

@@ -77786,9 +77786,8 @@
"disallowAutoRepeat": 0,
"effectCategory": 7,
"effectID": 7237,
"effectName": "\tsystemWarpSpeed",
"effectName": "systemWarpSpeedBonus",
"electronicChance": 0,
"guid": "",
"isAssistance": 0,
"isOffensive": 0,
"isWarpSafe": 0,
@@ -79225,9 +79224,32 @@
"published": 0,
"rangeChance": 0
},
"8075": {
"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,
@@ -79249,7 +79271,7 @@
},
"8076": {
"disallowAutoRepeat": 0,
"effectCategory": 0,
"effectCategory": 7,
"effectID": 8076,
"effectName": "systemHullThermalResistance",
"electronicChance": 0,
@@ -79271,7 +79293,7 @@
},
"8077": {
"disallowAutoRepeat": 0,
"effectCategory": 0,
"effectCategory": 7,
"effectID": 8077,
"effectName": "systemHullKineticResistance",
"electronicChance": 0,
@@ -79293,7 +79315,7 @@
},
"8078": {
"disallowAutoRepeat": 0,
"effectCategory": 0,
"effectCategory": 7,
"effectID": 8078,
"effectName": "systemHullExplosiveResistance",
"electronicChance": 0,
@@ -79317,7 +79339,7 @@
"disallowAutoRepeat": 0,
"effectCategory": 7,
"effectID": 8079,
"effectName": "systemVirusStrengthBonus",
"effectName": "systemVirusCoherenceBonus",
"electronicChance": 0,
"isAssistance": 0,
"isOffensive": 0,
@@ -79326,16 +79348,16 @@
{
"domain": "shipID",
"func": "LocationRequiredSkillModifier",
"modifiedAttributeID": 1910,
"modifyingAttributeID": 1918,
"modifiedAttributeID": 1909,
"modifyingAttributeID": 1915,
"operation": 2,
"skillTypeID": 13278
},
{
"domain": "shipID",
"func": "LocationRequiredSkillModifier",
"modifiedAttributeID": 1910,
"modifyingAttributeID": 1918,
"modifiedAttributeID": 1909,
"modifyingAttributeID": 1915,
"operation": 2,
"skillTypeID": 21718
}
@@ -79346,15 +79368,180 @@
},
"8080": {
"disallowAutoRepeat": 0,
"effectCategory": 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

@@ -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

@@ -25645,5 +25645,76 @@
},
"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
}
}

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

@@ -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": 1782806
"field_value": 1801413
},
{
"field_name": "dump_time",
"field_value": 1597151359
"field_value": 1599630922
}
]

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.25.0
version: v2.28.2dev1