Merge branch 'master' into development

Conflicts:
	config.py
This commit is contained in:
blitzmann
2017-11-12 15:33:59 -05:00
95 changed files with 543 additions and 350 deletions

View File

@@ -19,10 +19,10 @@ debug = False
saveInRoot = False
# Version data
version = "1.33.0"
version = "1.33.2"
tag = "git"
expansionName = "YC119.9"
expansionVersion = "1.3"
expansionName = "Lifeblood"
expansionVersion = "1.0"
evemonMinVersion = "4081"
pyfaPath = None

View File

@@ -1,9 +1,7 @@
# ammoInfluenceCapNeed
#
# Used by:
# Items from category: Charge (464 of 910)
# Charges from group: Frequency Crystal (184 of 184)
# Charges from group: Hybrid Charge (208 of 208)
# Items from category: Charge (478 of 924)
type = "passive"

View File

@@ -1,7 +1,7 @@
# ammoInfluenceRange
#
# Used by:
# Items from category: Charge (568 of 910)
# Items from category: Charge (572 of 924)
type = "passive"

View File

@@ -1,7 +1,7 @@
# boosterArmorHpPenalty
#
# Used by:
# Implants from group: Booster (12 of 49)
# Implants from group: Booster (12 of 52)
type = "boosterSideEffect"
# User-friendly name for the side effect

View File

@@ -1,7 +1,7 @@
# boosterMaxVelocityPenalty
#
# Used by:
# Implants from group: Booster (12 of 49)
# Implants from group: Booster (12 of 52)
type = "boosterSideEffect"
# User-friendly name for the side effect

View File

@@ -1,7 +1,7 @@
# boosterShieldCapacityPenalty
#
# Used by:
# Implants from group: Booster (12 of 49)
# Implants from group: Booster (12 of 52)
type = "boosterSideEffect"
# User-friendly name for the side effect

View File

@@ -4,9 +4,9 @@
# Ships from group: Carrier (4 of 4)
# Ships from group: Combat Battlecruiser (13 of 13)
# Ships from group: Command Ship (8 of 8)
# Ships from group: Force Auxiliary (5 of 5)
# Ships from group: Force Auxiliary (6 of 6)
# Ships from group: Supercarrier (6 of 6)
# Ships from group: Titan (6 of 6)
# Ships from group: Titan (7 of 7)
# Subsystems named like: Offensive Support Processor (4 of 4)
# Ship: Orca
# Ship: Rorqual

View File

@@ -2,6 +2,7 @@
#
# Used by:
# Ship: Enforcer
# Ship: Marshal
# Ship: Pacifier
type = "passive"

View File

@@ -1,7 +1,7 @@
# covertOpsAndReconOpsCloakModuleDelayBonus
#
# Used by:
# Ships from group: Black Ops (4 of 4)
# Ships from group: Black Ops (5 of 5)
# Ships from group: Blockade Runner (4 of 4)
# Ships from group: Covert Ops (7 of 7)
# Ships from group: Expedition Frigate (2 of 2)

View File

@@ -1,7 +1,7 @@
# covertOpsStealthBomberTargettingDelayBonus
#
# Used by:
# Ships from group: Black Ops (4 of 4)
# Ships from group: Black Ops (5 of 5)
# Ships from group: Stealth Bomber (4 of 5)
# Ship: Caedes
# Ship: Chremoas

View File

@@ -1,7 +1,7 @@
# doHacking
#
# Used by:
# Modules from group: Data Miners (15 of 16)
# Modules from group: Data Miners (17 of 18)
type = "active"

View File

@@ -1,7 +1,7 @@
# eliteBonusBlackOpsCloakVelocity2
#
# Used by:
# Ships from group: Black Ops (4 of 4)
# Ships from group: Black Ops (5 of 5)
type = "passive"

View File

@@ -0,0 +1,10 @@
# eliteBonusBlackOpsScramblerRange4
#
# Used by:
# Ship: Marshal
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Warp Scrambler", "maxRange",
src.getModifiedItemAttr("eliteBonusBlackOps4"), stackingPenalties=True, skill="Black Ops")

View File

@@ -0,0 +1,9 @@
# eliteBonusBlackOpsWarpVelocity1
#
# Used by:
# Ship: Marshal
type = "passive"
def handler(fit, src, context):
fit.ship.boostItemAttr("warpSpeedMultiplier", src.getModifiedItemAttr("eliteBonusBlackOps1"), stackingPenalties=True, skill="Black Ops")

View File

@@ -0,0 +1,10 @@
# eliteBonusBlackOpsWebRange3
#
# Used by:
# Ship: Marshal
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Stasis Web", "maxRange",
src.getModifiedItemAttr("eliteBonusBlackOps3"), stackingPenalties=True, skill="Black Ops")

View File

@@ -1,7 +1,7 @@
# entosisDurationMultiply
#
# Used by:
# Items from market group: Ships > Capital Ships (28 of 37)
# Items from market group: Ships > Capital Ships (31 of 40)
type = "passive"

View File

@@ -1,8 +1,8 @@
# miningInfoMultiplier
#
# Used by:
# Charges from group: Mining Crystal (30 of 30)
# Charges named like: Mining Crystal (32 of 32)
# Charges from group: Mining Crystal (40 of 40)
# Charges named like: Mining Crystal (42 of 42)
type = "passive"

View File

@@ -1,7 +1,7 @@
# missileSkillFoFAoeCloudSizeBonus
#
# Used by:
# Implants named like: Zainou 'Snapshot' FOF Explosion Radius FR (6 of 6)
# Implants named like: Zainou 'Snapshot' Auto Targeting Explosion Radius FR (6 of 6)
type = "passive"

View File

@@ -1,10 +1,12 @@
# missileSkillWarheadUpgradesEmDamageBonus
#
# Used by:
# Implants named like: Agency Damage Booster (3 of 3)
# Skill: Warhead Upgrades
type = "passive"
def handler(fit, skill, context):
def handler(fit, src, context):
mod = src.level if "skill" in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"emDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)
"emDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod)

View File

@@ -1,10 +1,12 @@
# missileSkillWarheadUpgradesExplosiveDamageBonus
#
# Used by:
# Implants named like: Agency Damage Booster (3 of 3)
# Skill: Warhead Upgrades
type = "passive"
def handler(fit, skill, context):
def handler(fit, src, context):
mod = src.level if "skill" in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"explosiveDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)
"explosiveDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod)

View File

@@ -1,10 +1,12 @@
# missileSkillWarheadUpgradesKineticDamageBonus
#
# Used by:
# Implants named like: Agency Damage Booster (3 of 3)
# Skill: Warhead Upgrades
type = "passive"
def handler(fit, skill, context):
def handler(fit, src, context):
mod = src.level if "skill" in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"kineticDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)
"kineticDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod)

View File

@@ -1,10 +1,12 @@
# missileSkillWarheadUpgradesThermalDamageBonus
#
# Used by:
# Implants named like: Agency Damage Booster (3 of 3)
# Skill: Warhead Upgrades
type = "passive"
def handler(fit, skill, context):
def handler(fit, src, context):
mod = src.level if "skill" in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"thermalDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)
"thermalDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod)

View File

@@ -1,7 +1,7 @@
# overloadSelfDamageBonus
#
# Used by:
# Modules from group: Energy Weapon (101 of 209)
# Modules from group: Energy Weapon (101 of 213)
# Modules from group: Hybrid Weapon (105 of 221)
# Modules from group: Projectile Weapon (99 of 165)
type = "overheat"

View File

@@ -7,7 +7,8 @@ type = "passive"
def handler(fit, container, context):
groups = ("Stasis Web", "Stasis Grappler", "Warp Scrambler", "Warp Disrupt Field Generator")
level = container.level if "skill" in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Propulsion Jamming"),
"capacitorNeed", container.getModifiedItemAttr("capNeedBonus") * level)

View File

@@ -1,7 +1,7 @@
# salvaging
#
# Used by:
# Modules from group: Salvager (2 of 2)
# Modules from group: Salvager (3 of 3)
type = "active"

View File

@@ -1,7 +1,7 @@
# shipAdvancedSpaceshipCommandAgilityBonus
#
# Used by:
# Items from market group: Ships > Capital Ships (37 of 37)
# Items from market group: Ships > Capital Ships (40 of 40)
type = "passive"

View File

@@ -1,6 +1,7 @@
# shipBonusDreadnoughtC2ShieldResists
#
# Used by:
# Ship: Caiman
# Ship: Phoenix
type = "passive"

View File

@@ -0,0 +1,20 @@
# shipBonusDreadnoughtG1KinThermDamageBonus
#
# Used by:
# Ship: Caiman
type = "passive"
def handler(fit, src, context):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "kineticDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "thermalDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "kineticDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "thermalDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "thermalDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "kineticDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")

View File

@@ -1,11 +1,15 @@
# shipBonusForceAuxiliaryC1RemoteBoostAndCapAmount
#
# Used by:
# Ship: Loggerhead
# Ship: Minokawa
type = "passive"
def handler(fit, src, context):
if src.getModifiedItemAttr("shipBonusForceAuxiliaryC1") is None:
return # See GH Issue 1321
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capacitor Emission Systems") or
mod.item.requiresSkill("Capital Capacitor Emission Systems"),
"powerTransferAmount", src.getModifiedItemAttr("shipBonusForceAuxiliaryC1"),

View File

@@ -1,6 +1,7 @@
# shipBonusForceAuxiliaryC2ShieldResists
#
# Used by:
# Ship: Loggerhead
# Ship: Minokawa
type = "passive"

View File

@@ -0,0 +1,10 @@
# shipBonusForceAuxiliaryG1RemoteShieldBoostAmount
#
# Used by:
# Ship: Loggerhead
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems"), "shieldBonus",
src.getModifiedItemAttr("shipBonusForceAuxiliaryG1"), skill="Gallente Carrier")

View File

@@ -1,6 +1,7 @@
# shipBonusLargeEnergyTurretMaxRangeAB
#
# Used by:
# Ship: Marshal
# Ship: Paladin
type = "passive"

View File

@@ -2,6 +2,7 @@
#
# Used by:
# Ship: Abaddon
# Ship: Marshal
type = "passive"

View File

@@ -0,0 +1,12 @@
# shipBonusLargeMissileFlightTimeCB1
#
# Used by:
# Ship: Marshal
type = "passive"
def handler(fit, src, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes"), "explosionDelay",
src.getModifiedItemAttr("shipBonusCB"), skill="Caldari Battleship")
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Cruise Missiles"), "explosionDelay",
src.getModifiedItemAttr("shipBonusCB"), skill="Caldari Battleship")

View File

@@ -0,0 +1,14 @@
# shipBonusLauncherRoF2CB
#
# Used by:
# Ship: Marshal
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Cruise", "speed",
src.getModifiedItemAttr("shipBonus2CB"), skill="Caldari Battleship")
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Torpedo", "speed",
src.getModifiedItemAttr("shipBonus2CB"), skill="Caldari Battleship")
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Rapid Heavy", "speed",
src.getModifiedItemAttr("shipBonus2CB"), skill="Caldari Battleship")

View File

@@ -1,6 +1,7 @@
# shipBonusPTFalloffMB1
#
# Used by:
# Ship: Marshal
# Ship: Vargur
type = "passive"

View File

@@ -1,7 +1,7 @@
# shipBonusRole1CommandBurstCPUBonus
#
# Used by:
# Ships from group: Force Auxiliary (5 of 5)
# Ships from group: Force Auxiliary (6 of 6)
type = "passive"

View File

@@ -1,7 +1,7 @@
# shipBonusRole1NumWarfareLinks
#
# Used by:
# Ships from group: Titan (6 of 6)
# Ships from group: Titan (7 of 7)
type = "passive"

View File

@@ -1,7 +1,7 @@
# shipBonusRole2ArmorPlates&ShieldExtendersBonus
#
# Used by:
# Ships from group: Titan (6 of 6)
# Ships from group: Titan (7 of 7)
type = "passive"

View File

@@ -0,0 +1,20 @@
# shipBonusRole2LogisticDroneRepAmountAndHitpointBonus
#
# Used by:
# Ship: Loggerhead
type = "passive"
def handler(fit, src, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Repair Drone Operation"),
"structureDamageAmount", src.getModifiedItemAttr("shipBonusRole2"))
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Repair Drone Operation"),
"shieldBonus", src.getModifiedItemAttr("shipBonusRole2"))
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Repair Drone Operation"),
"armorDamageAmount", src.getModifiedItemAttr("shipBonusRole2"))
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Repair Drone Operation"),
"armorHP", src.getModifiedItemAttr("shipBonusRole2"))
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Repair Drone Operation"),
"shieldCapacity", src.getModifiedItemAttr("shipBonusRole2"))
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Repair Drone Operation"),
"hp", src.getModifiedItemAttr("shipBonusRole2"))

View File

@@ -1,7 +1,7 @@
# shipBonusRole2LogisticDroneBonus
# shipBonusRole2LogisticDroneRepAmountBonus
#
# Used by:
# Ships from group: Force Auxiliary (5 of 5)
# Ships from group: Force Auxiliary (5 of 6)
type = "passive"

View File

@@ -1,7 +1,7 @@
# shipBonusRole3NumWarfareLinks
#
# Used by:
# Ships from group: Force Auxiliary (5 of 5)
# Ships from group: Force Auxiliary (6 of 6)
type = "passive"

View File

@@ -1,6 +1,7 @@
# shipBonusTitanRole3TorpdeoVelocityBonus
# shipBonusRole3XLTorpdeoVelocityBonus
#
# Used by:
# Ship: Komodo
# Ship: Leviathan
type = "passive"

View File

@@ -0,0 +1,17 @@
# shipBonusRole4FighterDamageAndHitpoints
#
# Used by:
# Ship: Caiman
# Ship: Komodo
type = "passive"
def handler(fit, src, context):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "shieldCapacity",
src.getModifiedItemAttr("shipBonusRole4"))
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityAttackTurretDamageMultiplier",
src.getModifiedItemAttr("shipBonusRole4"))
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityAttackMissileDamageMultiplier",
src.getModifiedItemAttr("shipBonusRole4"))
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityMissilesDamageMultiplier",
src.getModifiedItemAttr("shipBonusRole4"))

View File

@@ -0,0 +1,12 @@
# shipBonusTitanC1ShieldResists
#
# Used by:
# Ship: Komodo
type = "passive"
def handler(fit, src, context):
fit.ship.boostItemAttr("shieldKineticDamageResonance", src.getModifiedItemAttr("shipBonusTitanC1"), skill="Caldari Titan")
fit.ship.boostItemAttr("shieldEmDamageResonance", src.getModifiedItemAttr("shipBonusTitanC1"), skill="Caldari Titan")
fit.ship.boostItemAttr("shieldExplosiveDamageResonance", src.getModifiedItemAttr("shipBonusTitanC1"), skill="Caldari Titan")
fit.ship.boostItemAttr("shieldThermalDamageResonance", src.getModifiedItemAttr("shipBonusTitanC1"), skill="Caldari Titan")

View File

@@ -1,6 +1,7 @@
# shipBonusTitanC2ROFBonus
#
# Used by:
# Ship: Komodo
# Ship: Leviathan
type = "passive"

View File

@@ -1,6 +1,7 @@
# shipBonusTitanC3WarpStrength
#
# Used by:
# Ship: Komodo
# Ship: Leviathan
type = "passive"

View File

@@ -0,0 +1,20 @@
# shipBonusTitanG1KinThermDamageBonus
#
# Used by:
# Ship: Komodo
type = "passive"
def handler(fit, src, context):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "thermalDamage",
src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "kineticDamage",
src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "thermalDamage",
src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "kineticDamage",
src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "thermalDamage",
src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "kineticDamage",
src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan")

View File

@@ -0,0 +1,26 @@
# shipBonusTitanG2AllDamageBonus
#
# Used by:
# Ship: Komodo
type = "passive"
def handler(fit, src, context):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "thermalDamage",
src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "explosiveDamage",
src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "emDamage",
src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "thermalDamage",
src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "emDamage",
src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "explosiveDamage",
src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "emDamage",
src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "thermalDamage",
src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "explosiveDamage",
src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan")

View File

@@ -2,6 +2,7 @@
#
# Used by:
# Variations of ship: Erebus (2 of 2)
# Ship: Komodo
type = "passive"

View File

@@ -1,7 +1,7 @@
# shipBonusTitanM3WarpStrength
#
# Used by:
# Ships from group: Titan (3 of 6)
# Ships from group: Titan (3 of 7)
type = "passive"

View File

@@ -1,7 +1,7 @@
# shipCapitalAgilityBonus
#
# Used by:
# Items from market group: Ships > Capital Ships (28 of 37)
# Items from market group: Ships > Capital Ships (31 of 40)
type = "passive"

View File

@@ -4,6 +4,7 @@
# Ship: Dominix Navy Issue
# Ship: Hyperion
# Ship: Kronos
# Ship: Marshal
# Ship: Megathron Federate Issue
# Ship: Sin
type = "passive"

View File

@@ -2,6 +2,7 @@
#
# Used by:
# Ships named like: Megathron (3 of 3)
# Ship: Marshal
type = "passive"

View File

@@ -2,11 +2,16 @@
#
# Used by:
# Modules from group: Remote Capacitor Transmitter (41 of 41)
from eos.modifiedAttributeDict import ModifiedAttributeDict
type = "projected", "active"
def handler(fit, src, context):
def handler(fit, src, context, **kwargs):
if "projected" in context:
amount = src.getModifiedItemAttr("powerTransferAmount")
duration = src.getModifiedItemAttr("duration")
if 'effect' in kwargs:
amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
fit.addDrain(src, duration, -amount, 0)

View File

@@ -3,6 +3,7 @@
# Used by:
# Variations of ship: Tempest (4 of 4)
# Ship: Maelstrom
# Ship: Marshal
# Ship: Panther
# Ship: Typhoon Fleet Issue
type = "passive"

View File

@@ -1,6 +1,7 @@
# surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringGunnery
#
# Used by:
# Implants named like: Agency Damage Booster (3 of 3)
# Implants named like: Eifyr and Co. 'Gunslinger' Surgical Strike SS (6 of 6)
# Implant: Standard Cerebral Accelerator
type = "passive"

View File

@@ -2,7 +2,7 @@
#
# Used by:
# Drones from group: Combat Drone (74 of 74)
# Modules from group: Energy Weapon (208 of 209)
# Modules from group: Energy Weapon (212 of 213)
type = 'active'

View File

@@ -1193,8 +1193,7 @@ class Fit(object):
if energyNeutralizerSignatureResolution:
capNeed = capNeed * min(1, signatureRadius / energyNeutralizerSignatureResolution)
resistance = self.ship.getModifiedItemAttr("energyWarfareResistance") or 1 if capNeed > 0 else 1
self.__extraDrains.append((cycleTime, capNeed * resistance, clipSize))
self.__extraDrains.append((cycleTime, capNeed, clipSize))
def removeDrain(self, i):
del self.__extraDrains[i]

BIN
eve.db

Binary file not shown.

View File

@@ -168,6 +168,9 @@ class CommandView(d.Display):
self.update(stuff)
def get(self, row):
if row == -1:
return None
numFits = len(self.fits)
if numFits == 0:
@@ -193,23 +196,21 @@ class CommandView(d.Display):
wx.CallAfter(self.spawnMenu)
def spawnMenu(self):
fitID = self.mainFrame.getActiveFit()
if fitID is None:
return
sel = self.GetFirstSelected()
menu = None
if sel != -1:
item = self.get(sel)
if item is None:
return
context = ()
item = self.get(sel)
if item is not None:
fitSrcContext = "commandFit"
fitItemContext = item.name
context = ((fitSrcContext, fitItemContext),)
context += ("commandView",),
menu = ContextMenu.getMenu((item,), *context)
elif sel == -1:
fitID = self.mainFrame.getActiveFit()
if fitID is None:
return
context = (("commandView",),)
menu = ContextMenu.getMenu([], *context)
context += (("commandView",),)
menu = ContextMenu.getMenu((item,) if item is not None else [], *context)
if menu is not None:
self.PopupMenu(menu)

View File

@@ -223,6 +223,9 @@ class ProjectedView(d.Display):
self.update(stuff)
def get(self, row):
if row == -1:
return None
numMods = len(self.modules)
numDrones = len(self.drones)
numFighters = len(self.fighters)
@@ -260,13 +263,17 @@ class ProjectedView(d.Display):
wx.CallAfter(self.spawnMenu)
def spawnMenu(self):
fitID = self.mainFrame.getActiveFit()
if fitID is None:
return
sel = self.GetFirstSelected()
menu = None
if sel != -1:
item = self.get(sel)
if item is None:
return
context = ()
item = self.get(sel)
if item is not None:
sMkt = Market.getInstance()
if isinstance(item, es_Drone):
srcContext = "projectedDrone"
itemContext = sMkt.getCategoryByItem(item.item).name
@@ -290,14 +297,10 @@ class ProjectedView(d.Display):
fitSrcContext = "projectedFit"
fitItemContext = item.name
context = ((fitSrcContext, fitItemContext),)
context += ("projected",),
menu = ContextMenu.getMenu((item,), *context)
elif sel == -1:
fitID = self.mainFrame.getActiveFit()
if fitID is None:
return
context = (("projected",),)
menu = ContextMenu.getMenu([], *context)
context += (("projected",),)
menu = ContextMenu.getMenu((item,) if item is not None else [], *context)
if menu is not None:
self.PopupMenu(menu)

View File

@@ -23,7 +23,7 @@ class ChangeAmount(ContextMenu):
return srcContext in ("cargoItem", "projectedFit", "fighterItem", "projectedFighter")
def getText(self, itmContext, selection):
return "Change {0} Quantity".format(itmContext)
return u"Change {0} Quantity".format(itmContext)
def activate(self, fullContext, selection, i):
srcContext = fullContext[0]

View File

@@ -25,7 +25,7 @@ class ItemRemove(ContextMenu):
"commandFit")
def getText(self, itmContext, selection):
return "Remove {0}".format(itmContext if itmContext is not None else "Item")
return u"Remove {0}".format(itmContext if itmContext is not None else "Item")
def activate(self, fullContext, selection, i):

View File

@@ -543,25 +543,7 @@ class Miscellanea(ViewColumn):
return text, tooltip
elif stuff.charge is not None:
chargeGroup = stuff.charge.group.name
if chargeGroup in (
"Rocket",
"Advanced Rocket",
"Light Missile",
"Advanced Light Missile",
"FoF Light Missile",
"Heavy Assault Missile",
"Advanced Heavy Assault Missile",
"Heavy Missile",
"Advanced Heavy Missile",
"FoF Heavy Missile",
"Torpedo",
"Advanced Torpedo",
"Cruise Missile",
"Advanced Cruise Missile",
"FoF Cruise Missile",
"XL Torpedo",
"XL Cruise Missile"
):
if chargeGroup.endswith("Rocket") or chargeGroup.endswith("Missile") or chargeGroup.endswith("Torpedo"):
cloudSize = stuff.getModifiedChargeAttr("aoeCloudSize")
aoeVelocity = stuff.getModifiedChargeAttr("aoeVelocity")
if not cloudSize or not aoeVelocity:

View File

@@ -108,16 +108,10 @@ class CharacterSelection(wx.Panel):
charID = self.getActiveCharacter()
sChar = Character.getInstance()
skillsMap = {}
for item, stuff in self.reqs.iteritems():
for things in stuff.values():
if things[1] not in skillsMap:
skillsMap[things[1]] = things[0]
elif things[0] > skillsMap[things[1]]:
skillsMap[things[1]] = things[0]
skillsMap = self._buildSkillsTooltipCondensed(self.reqs, skillsMap={})
for skillID, level in skillsMap.iteritems():
sChar.changeLevel(charID, skillID, level, ifHigher=True)
for index in skillsMap:
sChar.changeLevel(charID, skillsMap[index][1], skillsMap[index][0], ifHigher=True)
self.refreshCharacterList()
@@ -235,7 +229,7 @@ class CharacterSelection(wx.Panel):
if condensed:
dict_ = self._buildSkillsTooltipCondensed(self.reqs, skillsMap={})
for key in sorted(dict_):
tip += "%s: %d\n" % (key, dict_[key])
tip += "%s: %d\n" % (key, dict_[key][0])
else:
tip += self._buildSkillsTooltip(self.reqs)
self.skillReqsStaticBitmap.SetBitmap(self.redSkills)
@@ -257,7 +251,7 @@ class CharacterSelection(wx.Panel):
list = ""
for key in sorted(skillsMap):
list += "%s %d\n" % (key, skillsMap[key])
list += "%s %d\n" % (key, skillsMap[key][0])
toClipboard(list)
@@ -307,9 +301,9 @@ class CharacterSelection(wx.Panel):
})
if name not in skillsMap:
skillsMap[name] = level
elif skillsMap[name] < level:
skillsMap[name] = level
skillsMap[name] = level, ID
elif skillsMap[name][0] < level:
skillsMap[name] = level, ID
skillsMap = self._buildSkillsTooltipCondensed(more, currItem, tabulationLevel + 1, skillsMap)

View File

@@ -378,6 +378,10 @@ class ShipBrowser(wx.Panel):
for ID, name, shipID, shipName, booster, timestamp, notes in fitList:
ship = sMkt.getItem(shipID)
if not sMkt.getPublicityByItem(ship):
continue
shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits
self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, shipTrait, name, booster, timestamp, notes), shipID))

BIN
imgs/icons/118_15.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 B

BIN
imgs/icons/128_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 818 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 B

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 B

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 731 B

After

Width:  |  Height:  |  Size: 732 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

BIN
imgs/renders/27299.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
imgs/renders/27301.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
imgs/renders/27303.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
imgs/renders/27305.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
imgs/renders/35835.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
imgs/renders/35836.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
imgs/renders/44996.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
imgs/renders/45530.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
imgs/renders/45531.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
imgs/renders/45645.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
imgs/renders/45647.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
imgs/renders/45649.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -6332,7 +6332,7 @@
description: icon for the station service slot
iconFile: res:/UI/Texture/classes/Fitting/stationServiceSlot.png
21513:
description: Focused Warp Disruption Script
description: Focused Warp Scrambling Script
iconFile: res:/ui/texture/icons/118_64_12.png
21514:
description: Upwell Male Jacket
@@ -6889,3 +6889,234 @@
21742:
description: Icon for the Xmas crates
iconFile: res:/UI/Texture/Icons/Inventory/holidayCrate.png
21743:
description: Focused Warp Disruption Script
iconFile: res:/ui/texture/icons/118_64_15.png
21744:
description: SOE Exploration Suit Female
iconFile: res:/UI/Asset/mannequin/outer/45514_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_SOE.png
21745:
description: Caldari Exploration Suit Female
iconFile: res:/UI/Asset/mannequin/outer/45515_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Caldari.png
21746:
description: Minmatar Exploration Suit Female
iconFile: res:/UI/Asset/mannequin/outer/45516_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Minmatar.png
21747:
description: Gallente Exploration Suit Female
iconFile: res:/UI/Asset/mannequin/outer/45517_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Gallente.png
21748:
description: Amarr Exploration Suit Female
iconFile: res:/UI/Asset/mannequin/outer/45518_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Amarr.png
21749:
description: Caldari Orange Exploration Suit Female
iconFile: res:/UI/Asset/mannequin/outer/45519_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_CaldariOrange.png
21750:
description: ORE Exploration Suit Female
iconFile: res:/UI/Asset/mannequin/outer/45520_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_ORE.png
21751:
description: Gallente Exploration Suit Male
iconFile: res:/UI/Asset/mannequin/outer/45521_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Gallente.png
21752:
description: ORE Exploration Suit Male
iconFile: res:/UI/Asset/mannequin/outer/45522_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_ORE.png
21753:
description: SOE Exploration Suit Male
iconFile: res:/UI/Asset/mannequin/outer/45523_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_SOE.png
21754:
description: Caldari Exploration Suit Male
iconFile: res:/UI/Asset/mannequin/outer/45524_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Caldari.png
21755:
description: Minmatar Exploration Suit Male
iconFile: res:/UI/Asset/mannequin/outer/45525_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Minmatar.png
21756:
description: Amarr Exploration Suit Male
iconFile: res:/UI/Asset/mannequin/outer/45526_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Amarr.png
21757:
description: Caldari Orange Exploration Suit Male
iconFile: res:/UI/Asset/mannequin/outer/45527_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_CaldariOrange.png
21760:
description: Project Discovery Crate Icon
iconFile: res:/UI/Texture/classes/ItemPacks/SplashImages/ProjectDiscoveryPlaceholder.png
21763:
description: 45734_female_TopMiddle_TshirtF01_Types_TshirtF01_Exo.png
iconFile: res:/UI/Asset/mannequin/topmiddle/45734_female_TopMiddle_TshirtF01_Types_TshirtF01_Exo.png
21764:
description: 45735_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Exo.png
iconFile: res:/UI/Asset/mannequin/outer/45735_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Exo.png
21765:
description: 45737_female_Outer_LabCoatF01_Types_LabCoatF01_Exo.png
iconFile: res:/UI/Asset/mannequin/outer/45737_female_Outer_LabCoatF01_Types_LabCoatF01_Exo.png
21766:
description: 45738_female_Outer_JacketMilF01_Types_JacketMilF01_exo.png
iconFile: res:/UI/Asset/mannequin/outer/45738_female_Outer_JacketMilF01_Types_JacketMilF01_exo.png
21767:
description: 45739_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Exo.png
iconFile: res:/UI/Asset/mannequin/hair/45739_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Exo.png
21768:
description: 45740_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Exo.png
iconFile: res:/UI/Asset/mannequin/hair/45740_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Exo.png
21769:
description: 45741_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Exo.png
iconFile: res:/UI/Asset/mannequin/outer/45741_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Exo.png
21770:
description: 45742_male_outer_JacketMilM02_Types_JacketMilM02_exo.png
iconFile: res:/UI/Asset/mannequin/outer/45742_male_outer_JacketMilM02_Types_JacketMilM02_exo.png
21771:
description: 45743_male_TopMiddle_TshirtM01_Types_TshirtM01_Exo.png
iconFile: res:/UI/Asset/mannequin/topmiddle/45743_male_TopMiddle_TshirtM01_Types_TshirtM01_Exo.png
21772:
description: 45744_male_outer_LabCoatM01_Types_LabCoatM01_Exo.png
iconFile: res:/UI/Asset/mannequin/outer/45744_male_outer_LabCoatM01_Types_LabCoatM01_Exo.png
21773:
description: 45745_male_Accessories_Glasses_Glasses_Exo_M01_Types_Glasses_Exo_M01_clear.png
iconFile: res:/UI/Asset/mannequin/accessories_glasses/45745_male_Accessories_Glasses_Glasses_Exo_M01_Types_Glasses_Exo_M01_clear.png
21774:
description: Structure Moon Drilling Service Module
iconFile: res:/UI/Texture/Icons/128_64_1.png
21775:
description: 45736_female_Accessories_Glasses_Glasses_Exo_F01_Types_Glasses_Exo_F01_clear.png
iconFile: res:/UI/Asset/mannequin/accessories_glasses/45736_female_Accessories_Glasses_Glasses_Exo_F01_Types_Glasses_Exo_F01_clear.png
21778:
description: 46038_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_IGC.png
iconFile: res:/UI/Asset/mannequin/outer/46038_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_IGC.png
21779:
description: 46039_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_IGC.png
iconFile: res:/UI/Asset/mannequin/outer/46039_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_IGC.png
21780:
description: 46274_male_outer_JacketPrtm01_Types_JacketPrtm01_valkyrie
iconFile: res:/UI/Asset/mannequin/outer/46274_male_outer_JacketPrtm01_Types_JacketPrtm01_valkyrie.png
21781:
description: 46273_female_Outer_JacketPrtF01_Types_JacketPrtF01_valkyrie
iconFile: res:/UI/Asset/mannequin/outer/46273_female_Outer_JacketPrtF01_Types_JacketPrtF01_valkyrie.png
21783:
description: ReactionBackdrop
iconFile: res:/ui/texture/icons/reaction.png
21784:
description: Valkyrie Data Core
iconFile: res:/UI/Texture/Icons/Inventory/dataCore.png
21785:
description: Valkyrie Relic Vault
iconFile: res:/UI/Texture/Icons/Inventory/relicVault.png
21787:
description: refinery rig drill
iconFile: res:/UI/Texture/Icons/Modules/refinery_ChunkStabilization.png
21788:
description: refinery rig reactions
iconFile: res:/UI/Texture/Icons/Modules/refinery_MiningYield.png
21789:
description: refinery reaction module booster
iconFile: res:/UI/Texture/Icons/Modules/refinery_BoosterReactions.png
21790:
description: refinery module hybrid reactions
iconFile: res:/UI/Texture/Icons/Modules/refinery_HybridReactions.png
21791:
description: refinery module adv reactions
iconFile: res:/UI/Texture/Icons/Modules/refinery_T2Reactions.png
21792:
description: moon asteroid ubi
iconFile: res:/UI/Texture/Icons/Inventory/moonAsteroid_R4.png
21793:
description: moon asteroid com
iconFile: res:/UI/Texture/Icons/Inventory/moonAsteroid_R8.png
21794:
description: moon asteroid unc
iconFile: res:/UI/Texture/Icons/Inventory/moonAsteroid_R16.png
21795:
description: moon asteroid rar
iconFile: res:/UI/Texture/Icons/Inventory/moonAsteroid_R32.png
21796:
description: moon asteroid exc
iconFile: res:/UI/Texture/Icons/Inventory/moonAsteroid_R64.png
21797:
description: moon asteroid ubi jkpt
iconFile: res:/UI/Texture/Icons/Inventory/moonAsteroid_JackpotR4.png
21798:
description: moon asteroid com jkpt
iconFile: res:/UI/Texture/Icons/Inventory/moonAsteroid_JackpotR8.png
21799:
description: moon asteroid unc jkpt
iconFile: res:/UI/Texture/Icons/Inventory/moonAsteroid_JackpotR16.png
21800:
description: moon asteroid rar jkpt
iconFile: res:/UI/Texture/Icons/Inventory/moonAsteroid_JackpotR32.png
21801:
description: moon asteroid exc jkpt
iconFile: res:/UI/Texture/Icons/Inventory/moonAsteroid_JackpotR64.png
21802:
description: Icon for the Gallente Resource Wars corporation
iconFile: res:/ui/texture/corps/federalStrategicMateriel.png
21803:
description: Icon for the Amarr Resource Wars corporation
iconFile: res:/ui/texture/corps/imperialWarReserves.png
21804:
description: Icon for the Minmatar Resource Wars corporation
iconFile: res:/ui/texture/corps/republicFleetOrdnance.png
21805:
description: Icon for the Caldari Resource Wars corporation
iconFile: res:/ui/texture/corps/stateMilitaryStockpile.png
21807:
description: 46658_female_Outer_JacketAGF01_Types_JacketAGF01_Gallente_RW.png
iconFile: res:/UI/Asset/mannequin/outer/46658_female_Outer_JacketAGF01_Types_JacketAGF01_Gallente_RW.png
21808:
description: 46659_male_outer_JacketCMM01_Types_JacketCMM01_Caldari.png
iconFile: res:/UI/Asset/mannequin/outer/46659_male_outer_JacketCMM01_Types_JacketCMM01_Caldari.png
21809:
description: 46660_female_Outer_JacketAGF01_Types_JacketAGF01_Gallente.png
iconFile: res:/UI/Asset/mannequin/outer/46660_female_Outer_JacketAGF01_Types_JacketAGF01_Gallente.png
21810:
description: 46661_female_Outer_JacketCMF01_Types_JacketCMF01_Minmatar_RW.png
iconFile: res:/UI/Asset/mannequin/outer/46661_female_Outer_JacketCMF01_Types_JacketCMF01_Minmatar_RW.png
21811:
description: 46662_male_outer_JacketAGM01_Types_JacketAGM01_Amarr.png
iconFile: res:/UI/Asset/mannequin/outer/46662_male_outer_JacketAGM01_Types_JacketAGM01_Amarr.png
21812:
description: 46663_female_Outer_JacketAGF01_Types_JacketAGF01_Amarr.png
iconFile: res:/UI/Asset/mannequin/outer/46663_female_Outer_JacketAGF01_Types_JacketAGF01_Amarr.png
21813:
description: 46664_male_outer_JacketCMM01_Types_JacketCMM01_Minmatar.png
iconFile: res:/UI/Asset/mannequin/outer/46664_male_outer_JacketCMM01_Types_JacketCMM01_Minmatar.png
21814:
description: 46665_male_outer_JacketAGM01_Types_JacketAGM01_Gallente.pn
iconFile: res:/UI/Asset/mannequin/outer/46665_male_outer_JacketAGM01_Types_JacketAGM01_Gallente.png
21815:
description: 46666_male_outer_JacketAGM01_Types_JacketAGM01_Amarr_RW.png
iconFile: res:/UI/Asset/mannequin/outer/46666_male_outer_JacketAGM01_Types_JacketAGM01_Amarr_RW.png
21816:
description: 46667_male_outer_JacketAGM01_Types_JacketAGM01_Gallente_RW.png
iconFile: res:/UI/Asset/mannequin/outer/46667_male_outer_JacketAGM01_Types_JacketAGM01_Gallente_RW.png
21817:
description: 46668_female_Outer_JacketAGF01_Types_JacketAGF01_Amarr_RW.png
iconFile: res:/UI/Asset/mannequin/outer/46668_female_Outer_JacketAGF01_Types_JacketAGF01_Amarr_RW.png
21818:
description: 46669_female_Outer_JacketCMF01_Types_JacketCMF01_Caldari.png
iconFile: res:/UI/Asset/mannequin/outer/46669_female_Outer_JacketCMF01_Types_JacketCMF01_Caldari.png
21819:
description: 46674_male_outer_JacketCMM01_Types_JacketCMM01_Minmatar_RW.png
iconFile: res:/UI/Asset/mannequin/outer/46674_male_outer_JacketCMM01_Types_JacketCMM01_Minmatar_RW.png
21820:
description: 46671_female_Outer_JacketCMF01_Types_JacketCMF01_Caldari_RW.png
iconFile: res:/UI/Asset/mannequin/outer/46671_female_Outer_JacketCMF01_Types_JacketCMF01_Caldari_RW.png
21821:
description: 46672_male_outer_JacketCMM01_Types_JacketCMM01_Caldari_RW.png
iconFile: res:/UI/Asset/mannequin/outer/46672_male_outer_JacketCMM01_Types_JacketCMM01_Caldari_RW.png
21822:
description: 46673_female_Outer_JacketCMF01_Types_JacketCMF01_Minmatar.png
iconFile: res:/UI/Asset/mannequin/outer/46673_female_Outer_JacketCMF01_Types_JacketCMF01_Minmatar.png
21823:
description: Resource Wars Asteroid Icon
iconFile: res:/UI/Texture/Icons/Inventory/rwAsteroid.png
21829:
description: Biochemical materials
iconFile: res:/ui/texture/icons/Inventory/biochemMaterials.png
21830:
description: Amarr RW reward crate icon
iconFile: res:/UI/Texture/Icons/Inventory/crateAmarr.png
21831:
description: Caldari RW reward crate icon
iconFile: res:/UI/Texture/Icons/Inventory/crateCaldari.png
21832:
description: Gallente RW reward crate icon
iconFile: res:/UI/Texture/Icons/Inventory/crateGallente.png
21833:
description: Minmatar RW reward crate icon
iconFile: res:/UI/Texture/Icons/Inventory/crateMinmatar.png

1
scripts/icons.json Normal file

File diff suppressed because one or more lines are too long

View File

@@ -192,7 +192,7 @@ def main(db, json_path):
for row in data["evetypes"]:
if (row["published"]
or row['groupID'] == 1306 # group Ship Modifiers, for items like tactical t3 ship modes
or row['typeID'] in (3638, 3634, 3636, 3640) # Civilian weapons
or row['typeName'].startswith('Civilian') # Civilian weapons
or row['typeID'] in (41549, 41548, 41551,41550) # Micro Bombs (Fighters)
):
eveTypes.add(row["typeID"])
@@ -213,6 +213,9 @@ def main(db, json_path):
for row in table:
# We don't care about some kind of rows, filter it out if so
if not isIgnored(jsonName, row):
if jsonName == 'evetypes' and row["typeName"].startswith('Civilian'): # Apparently people really want Civilian modules available
row["published"] = True
instance = tables[jsonName]()
# fix for issue 80
if jsonName is "icons" and "res:/ui/texture/icons/" in str(row["iconFile"]).lower():

View File

@@ -203,6 +203,8 @@ class Market(object):
"Fiend" : self.les_grp, # AT13 prize
"Caedes" : self.les_grp, # AT14 prize
"Rabisu" : self.les_grp, # AT14 prize
"Victor" : self.les_grp, # AT prize
"Virtuoso" : self.les_grp, # AT prize
}
self.ITEMS_FORCEGROUP_R = self.__makeRevDict(self.ITEMS_FORCEGROUP)
@@ -226,10 +228,8 @@ class Market(object):
"Guristas Shuttle" : False,
"Mobile Decoy Unit" : False, # Seems to be left over test mod for deployables
"Tournament Micro Jump Unit" : False, # Normally seen only on tournament arenas
"Civilian Gatling Railgun" : True,
"Civilian Gatling Pulse Laser" : True,
"Civilian Gatling Autocannon" : True,
"Civilian Light Electron Blaster" : True,
"Victor": False, # See GH Issue 1323
"Virtuoso": False, # See GH Issue 1323
}
# do not publish ships that we convert

View File

@@ -1,235 +0,0 @@
# Add root folder to python paths
# This must be done on every test in order to pass in Travis
import os
import sys
script_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..')))
# noinspection PyPackageRequirements
from _development.helpers import DBInMemory as DB, Gamedata, Saveddata
from _development.helpers_fits import RifterFit
# noinspection PyShadowingNames
def test_rifter_empty_char0(DB, Saveddata, RifterFit):
"""
We test an empty ship because if we use this as a base for testing our V skills,
and CCP ever fucks with the base states, all our derived stats will be wrong.
"""
char0 = Saveddata['Character'].getAll0()
RifterFit.character = char0
RifterFit.calculateModifiedAttributes()
assert RifterFit.ship.getModifiedItemAttr("agility") == 3.2
assert RifterFit.ship.getModifiedItemAttr("armorEmDamageResonance") == 0.4
assert RifterFit.ship.getModifiedItemAttr("armorExplosiveDamageResonance") == 0.9
assert RifterFit.ship.getModifiedItemAttr("armorHP") == 450.0
assert RifterFit.ship.getModifiedItemAttr("armorKineticDamageResonance") == 0.75
assert RifterFit.ship.getModifiedItemAttr("armorThermalDamageResonance") == 0.65
assert RifterFit.ship.getModifiedItemAttr("armorUniformity") == 0.75
assert RifterFit.ship.getModifiedItemAttr("baseWarpSpeed") == 1.0
assert RifterFit.ship.getModifiedItemAttr("capacitorCapacity") == 250.0
assert RifterFit.ship.getModifiedItemAttr("capacity") == 140.0
assert RifterFit.ship.getModifiedItemAttr("cpuLoad") == 0.0
assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 130.0
assert RifterFit.ship.getModifiedItemAttr("damage") == 0.0
assert RifterFit.ship.getModifiedItemAttr("droneBandwidth") == 0.0
assert RifterFit.ship.getModifiedItemAttr("droneCapacity") == 0.0
assert RifterFit.ship.getModifiedItemAttr("emDamageResonance") == 0.67
assert RifterFit.ship.getModifiedItemAttr("explosiveDamageResonance") == 0.67
assert RifterFit.ship.getModifiedItemAttr("fwLpKill") == 25.0
assert RifterFit.ship.getModifiedItemAttr("gfxBoosterID") == 397.0
assert RifterFit.ship.getModifiedItemAttr("heatAttenuationHi") == 0.63
assert RifterFit.ship.getModifiedItemAttr("heatAttenuationLow") == 0.5
assert RifterFit.ship.getModifiedItemAttr("heatAttenuationMed") == 0.5
assert RifterFit.ship.getModifiedItemAttr("heatCapacityHi") == 100.0
assert RifterFit.ship.getModifiedItemAttr("heatCapacityLow") == 100.0
assert RifterFit.ship.getModifiedItemAttr("heatCapacityMed") == 100.0
assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateHi") == 0.01
assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateLow") == 0.01
assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateMed") == 0.01
assert RifterFit.ship.getModifiedItemAttr("heatGenerationMultiplier") == 1.0
assert RifterFit.ship.getModifiedItemAttr("hiSlots") == 4.0
assert RifterFit.ship.getModifiedItemAttr("hp") == 350.0
assert RifterFit.ship.getModifiedItemAttr("hullEmDamageResonance") == 1.0
assert RifterFit.ship.getModifiedItemAttr("hullExplosiveDamageResonance") == 1.0
assert RifterFit.ship.getModifiedItemAttr("hullKineticDamageResonance") == 1.0
assert RifterFit.ship.getModifiedItemAttr("hullThermalDamageResonance") == 1.0
assert RifterFit.ship.getModifiedItemAttr("kineticDamageResonance") == 0.67
assert RifterFit.ship.getModifiedItemAttr("launcherSlotsLeft") == 2.0
assert RifterFit.ship.getModifiedItemAttr("lowSlots") == 3.0
assert RifterFit.ship.getModifiedItemAttr("mainColor") == 16777215.0
assert RifterFit.ship.getModifiedItemAttr("mass") == 1067000.0
assert RifterFit.ship.getModifiedItemAttr("maxDirectionalVelocity") == 3000.0
assert RifterFit.ship.getModifiedItemAttr("maxLockedTargets") == 4.0
assert RifterFit.ship.getModifiedItemAttr("maxPassengers") == 2.0
assert RifterFit.ship.getModifiedItemAttr("maxTargetRange") == 22500.0
assert RifterFit.ship.getModifiedItemAttr("maxVelocity") == 365.0
assert RifterFit.ship.getModifiedItemAttr("medSlots") == 3.0
assert RifterFit.ship.getModifiedItemAttr("metaLevel") == 0.0
assert RifterFit.ship.getModifiedItemAttr("minTargetVelDmgMultiplier") == 0.05
assert RifterFit.ship.getModifiedItemAttr("powerLoad") == 0.0
assert RifterFit.ship.getModifiedItemAttr("powerOutput") == 41.0
assert RifterFit.ship.getModifiedItemAttr("powerToSpeed") == 1.0
assert RifterFit.ship.getModifiedItemAttr("propulsionGraphicID") == 397.0
assert RifterFit.ship.getModifiedItemAttr("radius") == 31.0
assert RifterFit.ship.getModifiedItemAttr("rechargeRate") == 125000.0
assert RifterFit.ship.getModifiedItemAttr("requiredSkill1") == 3329.0
assert RifterFit.ship.getModifiedItemAttr("requiredSkill1Level") == 1.0
assert RifterFit.ship.getModifiedItemAttr("rigSize") == 1.0
assert RifterFit.ship.getModifiedItemAttr("rigSlots") == 3.0
assert RifterFit.ship.getModifiedItemAttr("scanGravimetricStrength") == 0.0
assert RifterFit.ship.getModifiedItemAttr("scanLadarStrength") == 8.0
assert RifterFit.ship.getModifiedItemAttr("scanMagnetometricStrength") == 0.0
assert RifterFit.ship.getModifiedItemAttr("scanRadarStrength") == 0.0
assert RifterFit.ship.getModifiedItemAttr("scanResolution") == 660.0
assert RifterFit.ship.getModifiedItemAttr("scanSpeed") == 1500.0
assert RifterFit.ship.getModifiedItemAttr("shieldCapacity") == 450.0
assert RifterFit.ship.getModifiedItemAttr("shieldEmDamageResonance") == 1.0
assert RifterFit.ship.getModifiedItemAttr("shieldExplosiveDamageResonance") == 0.5
assert RifterFit.ship.getModifiedItemAttr("shieldKineticDamageResonance") == 0.6
assert RifterFit.ship.getModifiedItemAttr("shieldRechargeRate") == 625000.0
assert RifterFit.ship.getModifiedItemAttr("shieldThermalDamageResonance") == 0.8
assert RifterFit.ship.getModifiedItemAttr("shieldUniformity") == 0.75
assert RifterFit.ship.getModifiedItemAttr("shipBonusMF") == 5.0
assert RifterFit.ship.getModifiedItemAttr("shipBonusMF2") == 10.0
assert RifterFit.ship.getModifiedItemAttr("shipScanResistance") == 0.0
assert RifterFit.ship.getModifiedItemAttr("signatureRadius") == 35.0
assert RifterFit.ship.getModifiedItemAttr("structureUniformity") == 1.0
assert RifterFit.ship.getModifiedItemAttr("techLevel") == 1.0
assert RifterFit.ship.getModifiedItemAttr("thermalDamageResonance") == 0.67
assert RifterFit.ship.getModifiedItemAttr("turretSlotsLeft") == 3.0
assert RifterFit.ship.getModifiedItemAttr("typeColorScheme") == 11342.0
assert RifterFit.ship.getModifiedItemAttr("uniformity") == 1.0
assert RifterFit.ship.getModifiedItemAttr("upgradeCapacity") == 400.0
assert RifterFit.ship.getModifiedItemAttr("upgradeSlotsLeft") == 3.0
assert RifterFit.ship.getModifiedItemAttr("volume") == 27289.0
assert RifterFit.ship.getModifiedItemAttr("warpCapacitorNeed") == 2.24e-06
assert RifterFit.ship.getModifiedItemAttr("warpFactor") == 0.0
assert RifterFit.ship.getModifiedItemAttr("warpSpeedMultiplier") == 5.0
# noinspection PyShadowingNames
def test_rifter_empty_char5(DB, Saveddata, RifterFit):
"""
Test char skills applying to a ship
"""
char5 = Saveddata['Character'].getAll5()
RifterFit.character = char5
RifterFit.calculateModifiedAttributes()
assert RifterFit.ship.getModifiedItemAttr("agility") == 2.16
assert RifterFit.ship.getModifiedItemAttr("armorEmDamageResonance") == 0.4
assert RifterFit.ship.getModifiedItemAttr("armorExplosiveDamageResonance") == 0.9
assert RifterFit.ship.getModifiedItemAttr("armorHP") == 562.5
assert RifterFit.ship.getModifiedItemAttr("armorKineticDamageResonance") == 0.75
assert RifterFit.ship.getModifiedItemAttr("armorThermalDamageResonance") == 0.65
assert RifterFit.ship.getModifiedItemAttr("armorUniformity") == 0.75
assert RifterFit.ship.getModifiedItemAttr("baseWarpSpeed") == 1.0
assert RifterFit.ship.getModifiedItemAttr("capacitorCapacity") == 312.5
assert RifterFit.ship.getModifiedItemAttr("capacity") == 140.0
assert RifterFit.ship.getModifiedItemAttr("cpuLoad") == 0.0
assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 162.5
assert RifterFit.ship.getModifiedItemAttr("damage") == 0.0
assert RifterFit.ship.getModifiedItemAttr("droneBandwidth") == 0.0
assert RifterFit.ship.getModifiedItemAttr("droneCapacity") == 0.0
assert RifterFit.ship.getModifiedItemAttr("emDamageResonance") == 0.67
assert RifterFit.ship.getModifiedItemAttr("explosiveDamageResonance") == 0.67
assert RifterFit.ship.getModifiedItemAttr("fwLpKill") == 25.0
assert RifterFit.ship.getModifiedItemAttr("gfxBoosterID") == 397.0
assert RifterFit.ship.getModifiedItemAttr("heatAttenuationHi") == 0.63
assert RifterFit.ship.getModifiedItemAttr("heatAttenuationLow") == 0.5
assert RifterFit.ship.getModifiedItemAttr("heatAttenuationMed") == 0.5
assert RifterFit.ship.getModifiedItemAttr("heatCapacityHi") == 100.0
assert RifterFit.ship.getModifiedItemAttr("heatCapacityLow") == 100.0
assert RifterFit.ship.getModifiedItemAttr("heatCapacityMed") == 100.0
assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateHi") == 0.01
assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateLow") == 0.01
assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateMed") == 0.01
assert RifterFit.ship.getModifiedItemAttr("heatGenerationMultiplier") == 1.0
assert RifterFit.ship.getModifiedItemAttr("hiSlots") == 4.0
assert RifterFit.ship.getModifiedItemAttr("hp") == 437.5
assert RifterFit.ship.getModifiedItemAttr("hullEmDamageResonance") == 1.0
assert RifterFit.ship.getModifiedItemAttr("hullExplosiveDamageResonance") == 1.0
assert RifterFit.ship.getModifiedItemAttr("hullKineticDamageResonance") == 1.0
assert RifterFit.ship.getModifiedItemAttr("hullThermalDamageResonance") == 1.0
assert RifterFit.ship.getModifiedItemAttr("kineticDamageResonance") == 0.67
assert RifterFit.ship.getModifiedItemAttr("launcherSlotsLeft") == 2.0
assert RifterFit.ship.getModifiedItemAttr("lowSlots") == 3.0
assert RifterFit.ship.getModifiedItemAttr("mainColor") == 16777215.0
assert RifterFit.ship.getModifiedItemAttr("mass") == 1067000.0
assert RifterFit.ship.getModifiedItemAttr("maxDirectionalVelocity") == 3000.0
assert RifterFit.ship.getModifiedItemAttr("maxLockedTargets") == 4.0
assert RifterFit.ship.getModifiedItemAttr("maxPassengers") == 2.0
assert RifterFit.ship.getModifiedItemAttr("maxTargetRange") == 28125.0
assert RifterFit.ship.getModifiedItemAttr("maxVelocity") == 456.25
assert RifterFit.ship.getModifiedItemAttr("medSlots") == 3.0
assert RifterFit.ship.getModifiedItemAttr("metaLevel") == 0.0
assert RifterFit.ship.getModifiedItemAttr("minTargetVelDmgMultiplier") == 0.05
assert RifterFit.ship.getModifiedItemAttr("powerLoad") == 0.0
assert RifterFit.ship.getModifiedItemAttr("powerOutput") == 51.25
assert RifterFit.ship.getModifiedItemAttr("powerToSpeed") == 1.0
assert RifterFit.ship.getModifiedItemAttr("propulsionGraphicID") == 397.0
assert RifterFit.ship.getModifiedItemAttr("radius") == 31.0
assert RifterFit.ship.getModifiedItemAttr("rechargeRate") == 93750.0
assert RifterFit.ship.getModifiedItemAttr("requiredSkill1") == 3329.0
assert RifterFit.ship.getModifiedItemAttr("requiredSkill1Level") == 1.0
assert RifterFit.ship.getModifiedItemAttr("rigSize") == 1.0
assert RifterFit.ship.getModifiedItemAttr("rigSlots") == 3.0
assert RifterFit.ship.getModifiedItemAttr("scanGravimetricStrength") == 0.0
assert RifterFit.ship.getModifiedItemAttr("scanLadarStrength") == 9.6
assert RifterFit.ship.getModifiedItemAttr("scanMagnetometricStrength") == 0.0
assert RifterFit.ship.getModifiedItemAttr("scanRadarStrength") == 0.0
assert RifterFit.ship.getModifiedItemAttr("scanResolution") == 825.0
assert RifterFit.ship.getModifiedItemAttr("scanSpeed") == 1500.0
assert RifterFit.ship.getModifiedItemAttr("shieldCapacity") == 562.5
assert RifterFit.ship.getModifiedItemAttr("shieldEmDamageResonance") == 1.0
assert RifterFit.ship.getModifiedItemAttr("shieldExplosiveDamageResonance") == 0.5
assert RifterFit.ship.getModifiedItemAttr("shieldKineticDamageResonance") == 0.6
assert RifterFit.ship.getModifiedItemAttr("shieldRechargeRate") == 468750.0
assert RifterFit.ship.getModifiedItemAttr("shieldThermalDamageResonance") == 0.8
assert RifterFit.ship.getModifiedItemAttr("shieldUniformity") == 1
assert RifterFit.ship.getModifiedItemAttr("shipBonusMF") == 5.0
assert RifterFit.ship.getModifiedItemAttr("shipBonusMF2") == 10.0
assert RifterFit.ship.getModifiedItemAttr("shipScanResistance") == 0.0
assert RifterFit.ship.getModifiedItemAttr("signatureRadius") == 35.0
assert RifterFit.ship.getModifiedItemAttr("structureUniformity") == 1.0
assert RifterFit.ship.getModifiedItemAttr("techLevel") == 1.0
assert RifterFit.ship.getModifiedItemAttr("thermalDamageResonance") == 0.67
assert RifterFit.ship.getModifiedItemAttr("turretSlotsLeft") == 3.0
assert RifterFit.ship.getModifiedItemAttr("typeColorScheme") == 11342.0
assert RifterFit.ship.getModifiedItemAttr("uniformity") == 1.0
assert RifterFit.ship.getModifiedItemAttr("upgradeCapacity") == 400.0
assert RifterFit.ship.getModifiedItemAttr("upgradeSlotsLeft") == 3.0
assert RifterFit.ship.getModifiedItemAttr("volume") == 27289.0
assert RifterFit.ship.getModifiedItemAttr("warpCapacitorNeed") == 1.12e-06
assert RifterFit.ship.getModifiedItemAttr("warpFactor") == 0.0
assert RifterFit.ship.getModifiedItemAttr("warpSpeedMultiplier") == 5.0
# noinspection PyShadowingNames
def test_rifter_coprocessor(DB, Saveddata, RifterFit):
char5 = Saveddata['Character'].getAll5()
char0 = Saveddata['Character'].getAll0()
RifterFit.character = char0
mod = Saveddata['Module'](DB['db'].getItem("Co-Processor II"))
mod.state = Saveddata['State'].OFFLINE
RifterFit.modules.append(mod)
assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 130
RifterFit.calculateModifiedAttributes()
assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 130
mod.state = Saveddata['State'].ONLINE
RifterFit.clear()
RifterFit.calculateModifiedAttributes()
assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 143
RifterFit.character = char5
RifterFit.clear()
RifterFit.calculateModifiedAttributes()
assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 178.75

View File

@@ -8,9 +8,9 @@ deps =
-rrequirements.txt
-rrequirements_test.txt
basepython = python2.7
commands = py.test -vv --cov Pyfa tests/
commands = py.test -vv --cov Pyfa tests2/
[testenv:pep8]
deps = flake8
# TODO: Remove E731 and convert lambdas to defs
commands = flake8 --exclude=.svn,CVS,.bzr,.hg,.git,__pycache__,venv,tests,.tox,build,dist,__init__.py,floatspin.py --ignore=E121,E126,E127,E128,E203,E731,F401 service gui eos utils config.py pyfa.py --max-line-length=165
commands = flake8 --exclude=.svn,CVS,.bzr,.hg,.git,__pycache__,venv,tests,.tox,build,dist,__init__.py,floatspin.py --ignore=E121,E126,E127,E128,E203,E731,F401,E722,E741 service gui eos utils config.py pyfa.py --max-line-length=165