Merge branch 'development' into LogBook_v2
Conflicts: config.py eos/saveddata/fit.py gui/bitmapLoader.py gui/graphFrame.py gui/utils/exportHtml.py pyfa.py service/crest.py service/price.py service/server.py
This commit is contained in:
10
eos/db/migrations/upgrade21.py
Normal file
10
eos/db/migrations/upgrade21.py
Normal file
@@ -0,0 +1,10 @@
|
||||
"""
|
||||
Migration 21
|
||||
|
||||
- Fixes discrepancy in drone table where we may have an amount active that is not equal to the amount in the stack
|
||||
(we don't support activating only 2/5 drones). See GH issue #728
|
||||
"""
|
||||
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
saveddata_engine.execute("UPDATE drones SET amountActive = amount where amountActive > 0 AND amountActive <> amount;")
|
||||
@@ -1,7 +1,7 @@
|
||||
# ammoInfluenceCapNeed
|
||||
#
|
||||
# Used by:
|
||||
# Items from category: Charge (465 of 899)
|
||||
# Items from category: Charge (465 of 912)
|
||||
# Charges from group: Frequency Crystal (185 of 185)
|
||||
# Charges from group: Hybrid Charge (209 of 209)
|
||||
type = "passive"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ammoInfluenceRange
|
||||
#
|
||||
# Used by:
|
||||
# Items from category: Charge (571 of 899)
|
||||
# Items from category: Charge (571 of 912)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ammoSpeedMultiplier
|
||||
#
|
||||
# Used by:
|
||||
# Charges from group: Festival Charges (9 of 9)
|
||||
# Charges from group: Festival Charges (22 of 22)
|
||||
# Charges from group: Interdiction Probe (2 of 2)
|
||||
# Charges from group: Survey Probe (3 of 3)
|
||||
type = "passive"
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
# Used by:
|
||||
# Modules from group: Armor Coating (202 of 202)
|
||||
# Modules from group: Armor Plating Energized (187 of 187)
|
||||
# Modules named like: QA Multiship Module Players (4 of 4)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# armorRepairAmountBonusSubcap
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Grade Asklepian (15 of 16)
|
||||
# Implants named like: grade Asklepian (15 of 18)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Data Miners (15 of 16)
|
||||
# Module: QA Cross Protocol Analyzer
|
||||
type = "active"
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Automated Targeting System (6 of 6)
|
||||
# Module: QA Damage Module
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Heat Sink (18 of 18)
|
||||
# Modules named like: QA Multiship Module Players (4 of 4)
|
||||
# Module: QA Damage Module
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Tracking Enhancer (10 of 10)
|
||||
# Module: QA Damage Module
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Tracking Enhancer (10 of 10)
|
||||
# Module: QA Damage Module
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Tracking Enhancer (10 of 10)
|
||||
# Module: QA Damage Module
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Magnetic Field Stabilizer (14 of 14)
|
||||
# Modules named like: QA Multiship Module Players (4 of 4)
|
||||
# Module: QA Damage Module
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -6,13 +6,13 @@ type = "passive"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff4Multiplier",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff4Value",
|
||||
src.getModifiedItemAttr("shipBonusICS2"), skill="Industrial Command Ships")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff1Multiplier",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff1Value",
|
||||
src.getModifiedItemAttr("shipBonusICS2"), skill="Industrial Command Ships")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "buffDuration",
|
||||
src.getModifiedItemAttr("shipBonusICS2"), skill="Industrial Command Ships")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff3Multiplier",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff3Value",
|
||||
src.getModifiedItemAttr("shipBonusICS2"), skill="Industrial Command Ships")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff2Multiplier",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff2Value",
|
||||
src.getModifiedItemAttr("shipBonusICS2"), skill="Industrial Command Ships")
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Ballistic Control system (17 of 17)
|
||||
# Modules named like: QA Multiship Module Players (4 of 4)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
# Modules from group: Reactor Control Unit (22 of 22)
|
||||
# Modules from group: Shield Recharger (4 of 4)
|
||||
# Modules named like: Flux Coil (12 of 12)
|
||||
# Modules named like: QA Multiship Module Players (4 of 4)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# remoteWeaponDisruptEntity
|
||||
# npcEntityWeaponDisruptor
|
||||
#
|
||||
# Used by:
|
||||
# Drones named like: TD (3 of 3)
|
||||
@@ -11,8 +11,6 @@
|
||||
# Modules from group: Smart Bomb (118 of 118)
|
||||
# Modules from group: Warp Disrupt Field Generator (7 of 7)
|
||||
# Modules named like: Ancillary Remote (8 of 8)
|
||||
# Module: QA Remote Armor Repair System - 5 Players
|
||||
# Module: QA Shield Transporter - 5 Players
|
||||
# Module: Reactive Armor Hardener
|
||||
# Module: Target Spectrum Breaker
|
||||
type = "overheat"
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Gyrostabilizer (13 of 13)
|
||||
# Modules named like: QA Multiship Module Players (4 of 4)
|
||||
# Module: QA Damage Module
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
# scanStrengthBonusPercentActivate
|
||||
#
|
||||
# Used by:
|
||||
# Module: QA ECCM
|
||||
# Not used by any item
|
||||
type = "active"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# scanStrengthBonusPercentPassive
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: High grade (20 of 61)
|
||||
# Implants named like: High grade (20 of 66)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
# setBonusAsklepian
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Grade Asklepian (16 of 16)
|
||||
# Implants named like: grade Asklepian Omega (2 of 2)
|
||||
# Implants named like: grade Asklepian (18 of 18)
|
||||
runTime = "early"
|
||||
type = "passive"
|
||||
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
# shieldTransfer
|
||||
#
|
||||
# Used by:
|
||||
# Module: QA Shield Transporter - 5 Players
|
||||
# Not used by any item
|
||||
type = "projected", "active"
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# remoteGuidanceDisruptFalloff
|
||||
# shipModuleGuidanceDisruptor
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Guidance Disruptor I (6 of 6)
|
||||
@@ -1,4 +1,4 @@
|
||||
# remoteTrackingAssistFalloff
|
||||
# shipModuleRemoteTrackingComputer
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Remote Tracking Computer (8 of 8)
|
||||
@@ -1,4 +1,4 @@
|
||||
# remoteTrackingDisruptFalloff
|
||||
# shipModuleTrackingDisruptor
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Tracking Disruptor I (6 of 6)
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Signal Amplifier (7 of 7)
|
||||
# Module: QA Damage Module
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# standardMissilesSkillBoostMissileVelocityBonus
|
||||
#
|
||||
# Used by:
|
||||
# Skill: Defender Missiles
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, skill, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Defender Missiles"),
|
||||
"maxVelocity", skill.getModifiedItemAttr("missileVelocityBonus") * skill.level)
|
||||
@@ -3,7 +3,6 @@
|
||||
# Used by:
|
||||
# Implants named like: Inherent Implants 'Noble' Repair Proficiency RP (6 of 6)
|
||||
# Modules named like: Auxiliary Nano Pump (8 of 8)
|
||||
# Modules named like: QA Multiship Module Players (4 of 4)
|
||||
# Implant: Imperial Navy Modified 'Noble' Implant
|
||||
type = "passive"
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
# Used by:
|
||||
# Modules from group: Nanofiber Internal Structure (7 of 7)
|
||||
# Modules from group: Reinforced Bulkhead (8 of 8)
|
||||
# Modules named like: QA Multiship Module Players (4 of 4)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
# targetArmorRepair
|
||||
#
|
||||
# Used by:
|
||||
# Module: QA Remote Armor Repair System - 5 Players
|
||||
# Not used by any item
|
||||
type = "projected", "active"
|
||||
|
||||
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
# Not used by any item
|
||||
type = "projected", "active"
|
||||
|
||||
|
||||
def handler(fit, container, context):
|
||||
if "projected" in context:
|
||||
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Gunnery"),
|
||||
"trackingSpeed", container.getModifiedItemAttr("trackingSpeedMultiplier"),
|
||||
stackingPenalties=True, penaltyGroup="postMul")
|
||||
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Gunnery"),
|
||||
"maxRange", container.getModifiedItemAttr("maxRangeMultiplier"),
|
||||
stackingPenalties=True, penaltyGroup="postMul")
|
||||
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Gunnery"),
|
||||
"falloff", container.getModifiedItemAttr("fallofMultiplier"),
|
||||
stackingPenalties=True, penaltyGroup="postMul")
|
||||
@@ -3,7 +3,7 @@
|
||||
# Used by:
|
||||
# Modules from group: Missile Launcher Heavy (12 of 12)
|
||||
# Modules from group: Missile Launcher Rocket (15 of 15)
|
||||
# Modules named like: Launcher (151 of 151)
|
||||
# Modules named like: Launcher (153 of 153)
|
||||
type = 'active', "projected"
|
||||
|
||||
|
||||
|
||||
@@ -47,9 +47,6 @@ class Effect(EqBase):
|
||||
# Filter to change names of effects to valid python method names
|
||||
nameFilter = re.compile("[^A-Za-z0-9]")
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@reconstructor
|
||||
def init(self):
|
||||
"""
|
||||
@@ -217,9 +214,6 @@ class Item(EqBase):
|
||||
|
||||
MOVE_ATTR_INFO = None
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def getMoveAttrInfo(cls):
|
||||
info = getattr(cls, "MOVE_ATTR_INFO", None)
|
||||
@@ -460,8 +454,6 @@ class Category(EqBase):
|
||||
|
||||
|
||||
class AlphaClone(EqBase):
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@reconstructor
|
||||
def init(self):
|
||||
@@ -490,8 +482,6 @@ class Icon(EqBase):
|
||||
|
||||
|
||||
class MarketGroup(EqBase):
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def __repr__(self):
|
||||
return u"MarketGroup(ID={}, name={}, parent={}) at {}".format(
|
||||
@@ -504,9 +494,6 @@ class MetaGroup(EqBase):
|
||||
|
||||
|
||||
class MetaType(EqBase):
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
pass
|
||||
|
||||
|
||||
|
||||
@@ -17,15 +17,9 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
import decimal
|
||||
from math import floor
|
||||
|
||||
|
||||
def floorFloat(value):
|
||||
"""Round float down to integer"""
|
||||
# We have to convert float to str to keep compatibility with
|
||||
# decimal module in python 2.6
|
||||
value = str(value)
|
||||
# Do the conversions for proper rounding down, avoiding float
|
||||
# representation errors
|
||||
result = int(decimal.Decimal(value).to_integral_value(rounding=decimal.ROUND_DOWN))
|
||||
result = int(floor(value))
|
||||
return result
|
||||
|
||||
@@ -140,7 +140,17 @@ class Character(object):
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self.savedName if not self.isDirty else "{} *".format(self.savedName)
|
||||
name = self.savedName
|
||||
|
||||
if self.isDirty:
|
||||
name += " *"
|
||||
|
||||
if self.alphaCloneID:
|
||||
clone = eos.db.getAlphaClone(self.alphaCloneID)
|
||||
type = clone.alphaCloneName.split()[1]
|
||||
name += u' (\u03B1{})'.format(type[0].upper())
|
||||
|
||||
return name
|
||||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
|
||||
@@ -515,7 +515,7 @@ class Fit(object):
|
||||
self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Sensor Dampener",
|
||||
attr, value)
|
||||
|
||||
self.modules.filteredItemBoost(lambda mod: mod.item.gorup.name == "Target Painter",
|
||||
self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Target Painter",
|
||||
"signatureRadiusBonus", value, stackingPenalties=True)
|
||||
|
||||
if warfareBuffID == 18: # Information Burst: Electronic Hardening: Scan Strength
|
||||
|
||||
Reference in New Issue
Block a user