diff --git a/eos/effects/elitereconbonusenergyneutamount2.py b/eos/effects/elitereconbonusenergyneutamount2.py index 6570460dd..ddbf0af85 100644 --- a/eos/effects/elitereconbonusenergyneutamount2.py +++ b/eos/effects/elitereconbonusenergyneutamount2.py @@ -6,4 +6,4 @@ type = "passive" def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Neutralizer", - "energyDestabilizationAmount", ship.getModifiedItemAttr("eliteBonusReconShip2"), skill="Recon Ships") + "energyNeutralizerAmount", ship.getModifiedItemAttr("eliteBonusReconShip2"), skill="Recon Ships") diff --git a/eos/effects/emshieldcompensationhardeningbonusgroupshieldamp.py b/eos/effects/emshieldcompensationhardeningbonusgroupshieldamp.py index b71bbe25d..61f79b11c 100644 --- a/eos/effects/emshieldcompensationhardeningbonusgroupshieldamp.py +++ b/eos/effects/emshieldcompensationhardeningbonusgroupshieldamp.py @@ -4,5 +4,5 @@ # Skill: EM Shield Compensation type = "passive" def handler(fit, skill, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Shield Amplifier", + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Shield Resistance Amplifier", "emDamageResistanceBonus", skill.getModifiedItemAttr("hardeningBonus") * skill.level) \ No newline at end of file diff --git a/eos/effects/energydestabilizationnew.py b/eos/effects/energydestabilizationnew.py index c07517b0b..d2c3b8e03 100644 --- a/eos/effects/energydestabilizationnew.py +++ b/eos/effects/energydestabilizationnew.py @@ -5,6 +5,6 @@ def handler(fit, container, context): if "projected" in context and ((hasattr(container, "state") \ and container.state >= State.ACTIVE) or hasattr(container, "amountActive")): multiplier = container.amountActive if hasattr(container, "amountActive") else 1 - amount = container.getModifiedItemAttr("energyDestabilizationAmount") + amount = container.getModifiedItemAttr("energyNeutralizerAmount") time = container.getModifiedItemAttr("duration") fit.addDrain(time, amount * multiplier, 0) diff --git a/eos/effects/energyneutralizerentity.py b/eos/effects/energyneutralizerentity.py index 49b895385..993df4a39 100644 --- a/eos/effects/energyneutralizerentity.py +++ b/eos/effects/energyneutralizerentity.py @@ -7,6 +7,6 @@ type = "active", "projected" def handler(fit, container, context): if "projected" in context and ((hasattr(container, "state") \ and container.state >= State.ACTIVE) or hasattr(container, "amountActive")): - amount = container.getModifiedItemAttr("energyDestabilizationAmount") + amount = container.getModifiedItemAttr("energyNeutralizerAmount") time = container.getModifiedItemAttr("duration") fit.addDrain(time, amount, 0) diff --git a/eos/effects/energyneutralizerfalloff.py b/eos/effects/energyneutralizerfalloff.py index 4896cec2d..b0702ad29 100644 --- a/eos/effects/energyneutralizerfalloff.py +++ b/eos/effects/energyneutralizerfalloff.py @@ -7,6 +7,6 @@ type = "active", "projected" def handler(fit, container, context): if "projected" in context and ((hasattr(container, "state") \ and container.state >= State.ACTIVE) or hasattr(container, "amountActive")): - amount = container.getModifiedItemAttr("energyDestabilizationAmount") + amount = container.getModifiedItemAttr("energyNeutralizerAmount") time = container.getModifiedItemAttr("duration") fit.addDrain(time, amount, 0) diff --git a/eos/effects/entityecmfalloff.py b/eos/effects/entityecmfalloff.py new file mode 100644 index 000000000..ff841419e --- /dev/null +++ b/eos/effects/entityecmfalloff.py @@ -0,0 +1,7 @@ +type = "projected", "active" +def handler(fit, module, context): + if "projected" in context: + # jam formula: 1 - (1- (jammer str/ship str))^(# of jam mods with same str)) + strModifier = 1 - module.getModifiedItemAttr("scan{0}StrengthBonus".format(fit.scanType))/fit.scanStrength + + fit.ecmProjectedStr *= strModifier diff --git a/eos/effects/entityenergyneutralizerfalloff.py b/eos/effects/entityenergyneutralizerfalloff.py new file mode 100644 index 000000000..d1822bc9d --- /dev/null +++ b/eos/effects/entityenergyneutralizerfalloff.py @@ -0,0 +1,12 @@ +# energyNeutralizerFalloff +# +# Used by: +# Modules from group: Energy Neutralizer (51 of 51) +from eos.types import State +type = "active", "projected" +def handler(fit, container, context): + if "projected" in context and ((hasattr(container, "state") \ + and container.state >= State.ACTIVE) or hasattr(container, "amountActive")): + amount = container.getModifiedItemAttr("energyNeutralizerAmount") + time = container.getModifiedItemAttr("energyNeutralizerDuration") + fit.addDrain(time, amount, 0) diff --git a/eos/effects/explosiveshieldcompensationhardeningbonusgroupshieldamp.py b/eos/effects/explosiveshieldcompensationhardeningbonusgroupshieldamp.py index abe48656f..3703083d1 100644 --- a/eos/effects/explosiveshieldcompensationhardeningbonusgroupshieldamp.py +++ b/eos/effects/explosiveshieldcompensationhardeningbonusgroupshieldamp.py @@ -4,5 +4,5 @@ # Skill: Explosive Shield Compensation type = "passive" def handler(fit, skill, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Shield Amplifier", + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Shield Resistance Amplifier", "explosiveDamageResistanceBonus", skill.getModifiedItemAttr("hardeningBonus") * skill.level) \ No newline at end of file diff --git a/eos/effects/kineticshieldcompensationhardeningbonusgroupshieldamp.py b/eos/effects/kineticshieldcompensationhardeningbonusgroupshieldamp.py index 6e54d9488..d230979b7 100644 --- a/eos/effects/kineticshieldcompensationhardeningbonusgroupshieldamp.py +++ b/eos/effects/kineticshieldcompensationhardeningbonusgroupshieldamp.py @@ -4,6 +4,6 @@ # Skill: Kinetic Shield Compensation type = "passive" def handler(fit, skill, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Shield Amplifier", + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Shield Resistance Amplifier", "kineticDamageResistanceBonus", skill.getModifiedItemAttr("hardeningBonus") * skill.level) \ No newline at end of file diff --git a/eos/effects/modifyshieldresonancepostpercent.py b/eos/effects/modifyshieldresonancepostpercent.py index 5bb295d7f..3b2dcacb2 100644 --- a/eos/effects/modifyshieldresonancepostpercent.py +++ b/eos/effects/modifyshieldresonancepostpercent.py @@ -1,7 +1,7 @@ # modifyShieldResonancePostPercent # # Used by: -# Modules from group: Shield Amplifier (88 of 88) +# Modules from group: Shield Resistance Amplifier (88 of 88) type = "passive" def handler(fit, module, context): for type in ("kinetic", "thermal", "explosive", "em"): diff --git a/eos/effects/modulebonusnetworkedsensorarray.py b/eos/effects/modulebonusnetworkedsensorarray.py index 880e041bb..53502bed7 100644 --- a/eos/effects/modulebonusnetworkedsensorarray.py +++ b/eos/effects/modulebonusnetworkedsensorarray.py @@ -4,9 +4,8 @@ # Module: Networked Sensor Array type = "active" def handler(fit, src, context): - fit.ship.increaseItemAttr("maxLockedTargets", src.getModifiedItemAttr("maxLockedTargetsBonus")) fit.ship.multiplyItemAttr("maxTargetRange", src.getModifiedItemAttr("maxTargetRangeMultiplier"), stackingPenalties=True, penaltyGroup="postMul") - fit.ship.multiplyItemAttr("scanResolution", src.getModifiedItemAttr("scanResolutionMultiplier"), stackingPenalties=True) + fit.ship.boostItemAttr("scanResolution", src.getModifiedItemAttr("scanResolutionBonus"), stackingPenalties=True) for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): fit.ship.boostItemAttr("scan{}Strength".format(scanType), diff --git a/eos/effects/modulebonussiegemodule.py b/eos/effects/modulebonussiegemodule.py index b51553ff7..bb5258be6 100644 --- a/eos/effects/modulebonussiegemodule.py +++ b/eos/effects/modulebonussiegemodule.py @@ -44,14 +44,9 @@ def handler(fit, src, context): fit.ship.forceItemAttr("disallowAssistance", src.getModifiedItemAttr("disallowAssistance")) # new in April 2016 release - for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): - fit.ship.boostItemAttr("scan{}Strength".format(scanType), - src.getModifiedItemAttr("scan{}StrengthPercent".format(scanType)), - stackingPenalties=True) - # missile ROF bonus for group in ("Missile Launcher XL Torpedo", "Missile Launcher Rapid Torpedo", "Missile Launcher XL Cruise"): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == group, "speed", src.getModifiedItemAttr("siegeLauncherROFBonus"), stackingPenalties=True) + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == group, "speed", src.getModifiedItemAttr("siegeLauncherROFBonus")) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes"), "maxVelocity", src.getModifiedItemAttr("siegeTorpedoVelocityBonus"), stackingPenalties=True) diff --git a/eos/effects/modulebonustriagemodule.py b/eos/effects/modulebonustriagemodule.py index 791acecc3..30384fdb2 100644 --- a/eos/effects/modulebonustriagemodule.py +++ b/eos/effects/modulebonustriagemodule.py @@ -56,12 +56,6 @@ def handler(fit, src, context): fit.ship.forceItemAttr("disallowAssistance", src.getModifiedItemAttr("disallowAssistance")) # new in April 2016 release - - for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): - fit.ship.boostItemAttr("scan{}Strength".format(scanType), - src.getModifiedItemAttr("scan{}StrengthPercent".format(scanType)), - stackingPenalties=True) - fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "damageMultiplier", src.getModifiedItemAttr("droneDamageBonus"), stackingPenalties=True) fit.ship.increaseItemAttr("warpScrambleStatus", src.getModifiedItemAttr("siegeModeWarpStatus")) diff --git a/eos/effects/rigdrawbackreductionarmor.py b/eos/effects/rigdrawbackreductionarmor.py new file mode 100644 index 000000000..f76ff2497 --- /dev/null +++ b/eos/effects/rigdrawbackreductionarmor.py @@ -0,0 +1,5 @@ +type = "passive" +def handler(fit, src, context): + lvl = src.level + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Armor", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Resource Processing", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) diff --git a/eos/effects/rigdrawbackreductionastronautics.py b/eos/effects/rigdrawbackreductionastronautics.py new file mode 100644 index 000000000..9f235f846 --- /dev/null +++ b/eos/effects/rigdrawbackreductionastronautics.py @@ -0,0 +1,5 @@ +type = "passive" +def handler(fit, src, context): + lvl = src.level + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Navigation", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Anchor", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) diff --git a/eos/effects/rigdrawbackreductiondrones.py b/eos/effects/rigdrawbackreductiondrones.py new file mode 100644 index 000000000..8935bf594 --- /dev/null +++ b/eos/effects/rigdrawbackreductiondrones.py @@ -0,0 +1,4 @@ +type = "passive" +def handler(fit, src, context): + lvl = src.level + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Drones", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) diff --git a/eos/effects/rigdrawbackreductionelectronic.py b/eos/effects/rigdrawbackreductionelectronic.py new file mode 100644 index 000000000..db8267332 --- /dev/null +++ b/eos/effects/rigdrawbackreductionelectronic.py @@ -0,0 +1,6 @@ +type = "passive" +def handler(fit, src, context): + lvl = src.level + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Electronic Systems", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Scanning", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Targeting", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) diff --git a/eos/effects/rigdrawbackreductionenergyweapon.py b/eos/effects/rigdrawbackreductionenergyweapon.py new file mode 100644 index 000000000..35e70b2ab --- /dev/null +++ b/eos/effects/rigdrawbackreductionenergyweapon.py @@ -0,0 +1,4 @@ +type = "passive" +def handler(fit, src, context): + lvl = src.level + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Energy Weapon", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) diff --git a/eos/effects/rigdrawbackreductionhybrid.py b/eos/effects/rigdrawbackreductionhybrid.py new file mode 100644 index 000000000..8e4e54e48 --- /dev/null +++ b/eos/effects/rigdrawbackreductionhybrid.py @@ -0,0 +1,4 @@ +type = "passive" +def handler(fit, src, context): + lvl = src.level + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Hybrid Weapon", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) diff --git a/eos/effects/rigdrawbackreductionlauncher.py b/eos/effects/rigdrawbackreductionlauncher.py new file mode 100644 index 000000000..9afeb7ac3 --- /dev/null +++ b/eos/effects/rigdrawbackreductionlauncher.py @@ -0,0 +1,4 @@ +type = "passive" +def handler(fit, src, context): + lvl = src.level + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Launcher", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) diff --git a/eos/effects/rigdrawbackreductionprojectile.py b/eos/effects/rigdrawbackreductionprojectile.py new file mode 100644 index 000000000..423f22936 --- /dev/null +++ b/eos/effects/rigdrawbackreductionprojectile.py @@ -0,0 +1,4 @@ +type = "passive" +def handler(fit, src, context): + lvl = src.level + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Projectile Weapon", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) diff --git a/eos/effects/rigdrawbackreductionshield.py b/eos/effects/rigdrawbackreductionshield.py new file mode 100644 index 000000000..701fbf848 --- /dev/null +++ b/eos/effects/rigdrawbackreductionshield.py @@ -0,0 +1,4 @@ +type = "passive" +def handler(fit, src, context): + lvl = src.level + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Rig Shield", "drawback", src.getModifiedItemAttr("rigDrawbackBonus") * lvl) diff --git a/eos/effects/shieldcapacitybonusonline.py b/eos/effects/shieldcapacitybonusonline.py index 2c4794eda..d68bdb29a 100644 --- a/eos/effects/shieldcapacitybonusonline.py +++ b/eos/effects/shieldcapacitybonusonline.py @@ -1,7 +1,7 @@ # shieldCapacityBonusOnline # # Used by: -# Modules from group: Shield Amplifier (88 of 88) +# Modules from group: Shield Resistance Amplifier (88 of 88) # Modules from group: Shield Extender (33 of 33) type = "passive" def handler(fit, module, context): diff --git a/eos/effects/shipbonusdreadnoughtm1webbonus.py b/eos/effects/shipbonusdreadnoughtm1webbonus.py new file mode 100644 index 000000000..0cf7fb7f1 --- /dev/null +++ b/eos/effects/shipbonusdreadnoughtm1webbonus.py @@ -0,0 +1,3 @@ +type = "passive" +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Stasis Web", "speedFactor", src.getModifiedItemAttr("shipBonusDreadnoughtM1"), skill="Minmatar Dreadnought") diff --git a/eos/effects/shipbonussupercarrierm1burstprojectorwebbonus.py b/eos/effects/shipbonussupercarrierm1burstprojectorwebbonus.py new file mode 100644 index 000000000..3bf0ba477 --- /dev/null +++ b/eos/effects/shipbonussupercarrierm1burstprojectorwebbonus.py @@ -0,0 +1,3 @@ +type = "passive" +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Burst Projector Operation"), "speedFactor", src.getModifiedItemAttr("shipBonusSupercarrierM1"), skill="Minmatar Carrier") diff --git a/eos/effects/shipbonustitanm1webbonus.py b/eos/effects/shipbonustitanm1webbonus.py new file mode 100644 index 000000000..9bf5d2610 --- /dev/null +++ b/eos/effects/shipbonustitanm1webbonus.py @@ -0,0 +1,3 @@ +type = "passive" +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Stasis Web", "speedFactor", src.getModifiedItemAttr("shipBonusTitanM1"), skill="Minmatar Titan") diff --git a/eos/effects/shipbonustitanrole3damagebonus.py b/eos/effects/shipbonustitanrole3damagebonus.py new file mode 100644 index 000000000..836e1d165 --- /dev/null +++ b/eos/effects/shipbonustitanrole3damagebonus.py @@ -0,0 +1,3 @@ +type = "passive" +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Hybrid Turret"), "damageMultiplier", src.getModifiedItemAttr("shipBonusRole3")) diff --git a/eos/effects/shipenergyneutralizertransferamountbonusab.py b/eos/effects/shipenergyneutralizertransferamountbonusab.py index 3a005e1fc..a331c58d4 100644 --- a/eos/effects/shipenergyneutralizertransferamountbonusab.py +++ b/eos/effects/shipenergyneutralizertransferamountbonusab.py @@ -5,4 +5,4 @@ type = "passive" def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Neutralizer", - "energyDestabilizationAmount", ship.getModifiedItemAttr("shipBonusAB"), skill="Amarr Battleship") + "energyNeutralizerAmount", ship.getModifiedItemAttr("shipBonusAB"), skill="Amarr Battleship") diff --git a/eos/effects/shipenergyneutralizertransferamountbonusac.py b/eos/effects/shipenergyneutralizertransferamountbonusac.py index 1c4546fd3..58fb9bb96 100644 --- a/eos/effects/shipenergyneutralizertransferamountbonusac.py +++ b/eos/effects/shipenergyneutralizertransferamountbonusac.py @@ -6,4 +6,4 @@ type = "passive" def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Neutralizer", - "energyDestabilizationAmount", ship.getModifiedItemAttr("shipBonusAC"), skill="Amarr Cruiser") + "energyNeutralizerAmount", ship.getModifiedItemAttr("shipBonusAC"), skill="Amarr Cruiser") diff --git a/eos/effects/shipenergyneutralizertransferamountbonusaf.py b/eos/effects/shipenergyneutralizertransferamountbonusaf.py index 6e525dcb1..11116d5a2 100644 --- a/eos/effects/shipenergyneutralizertransferamountbonusaf.py +++ b/eos/effects/shipenergyneutralizertransferamountbonusaf.py @@ -6,4 +6,4 @@ type = "passive" def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Neutralizer", - "energyDestabilizationAmount", ship.getModifiedItemAttr("shipBonusAF"), skill="Amarr Frigate") + "energyNeutralizerAmount", ship.getModifiedItemAttr("shipBonusAF"), skill="Amarr Frigate") diff --git a/eos/effects/shipenergyneutralizertransferamountbonusaf2.py b/eos/effects/shipenergyneutralizertransferamountbonusaf2.py index 36a9f2b95..16c62b8a1 100644 --- a/eos/effects/shipenergyneutralizertransferamountbonusaf2.py +++ b/eos/effects/shipenergyneutralizertransferamountbonusaf2.py @@ -5,4 +5,4 @@ type = "passive" def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Neutralizer", - "energyDestabilizationAmount", ship.getModifiedItemAttr("shipBonus2AF"), skill="Amarr Frigate") + "energyNeutralizerAmount", ship.getModifiedItemAttr("shipBonus2AF"), skill="Amarr Frigate") diff --git a/eos/effects/shipneutdestabilizationamountbonusrookie.py b/eos/effects/shipneutdestabilizationamountbonusrookie.py index d333686cc..1d1aa57ad 100644 --- a/eos/effects/shipneutdestabilizationamountbonusrookie.py +++ b/eos/effects/shipneutdestabilizationamountbonusrookie.py @@ -5,4 +5,4 @@ type = "passive" def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Neutralizer", - "energyDestabilizationAmount", ship.getModifiedItemAttr("rookieNeutDrain")) + "energyNeutralizerAmount", ship.getModifiedItemAttr("rookieNeutDrain")) diff --git a/eos/effects/subsystembonusamarrelectronicenergydestabilizeramount.py b/eos/effects/subsystembonusamarrelectronicenergydestabilizeramount.py index 55e7d5614..ba29f0b27 100644 --- a/eos/effects/subsystembonusamarrelectronicenergydestabilizeramount.py +++ b/eos/effects/subsystembonusamarrelectronicenergydestabilizeramount.py @@ -5,4 +5,4 @@ type = "passive" def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Neutralizer", - "energyDestabilizationAmount", module.getModifiedItemAttr("subsystemBonusAmarrElectronic"), skill="Amarr Electronic Systems") + "energyNeutralizerAmount", module.getModifiedItemAttr("subsystemBonusAmarrElectronic"), skill="Amarr Electronic Systems") diff --git a/eos/effects/systemenergyneutmultiplier.py b/eos/effects/systemenergyneutmultiplier.py index 8c6328c98..6c3e7b5af 100644 --- a/eos/effects/systemenergyneutmultiplier.py +++ b/eos/effects/systemenergyneutmultiplier.py @@ -6,5 +6,5 @@ runTime = "early" type = ("projected", "passive") def handler(fit, beacon, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Energy Neutralizer", - "energyDestabilizationAmount", beacon.getModifiedItemAttr("energyWarfareStrengthMultiplier"), + "energyNeutralizerAmount", beacon.getModifiedItemAttr("energyWarfareStrengthMultiplier"), stackingPenalties=True, penaltyGroup="postMul") diff --git a/eos/effects/systemneutbombs.py b/eos/effects/systemneutbombs.py index a87d4e691..4bdadf12b 100644 --- a/eos/effects/systemneutbombs.py +++ b/eos/effects/systemneutbombs.py @@ -6,5 +6,5 @@ runTime = "early" type = ("projected", "passive") def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill("Bomb Deployment"), - "energyDestabilizationAmount", beacon.getModifiedItemAttr("smartbombDamageMultiplier"), + "energyNeutralizerAmount", beacon.getModifiedItemAttr("smartbombDamageMultiplier"), stackingPenalties=True, penaltyGroup="postMul") diff --git a/eos/effects/thermalshieldcompensationhardeningbonusgroupshieldamp.py b/eos/effects/thermalshieldcompensationhardeningbonusgroupshieldamp.py index 1dec7e8d3..00519379a 100644 --- a/eos/effects/thermalshieldcompensationhardeningbonusgroupshieldamp.py +++ b/eos/effects/thermalshieldcompensationhardeningbonusgroupshieldamp.py @@ -4,5 +4,5 @@ # Skill: Thermal Shield Compensation type = "passive" def handler(fit, skill, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Shield Amplifier", + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Shield Resistance Amplifier", "thermalDamageResistanceBonus", skill.getModifiedItemAttr("hardeningBonus") * skill.level) \ No newline at end of file diff --git a/eos/graph/fitDps.py b/eos/graph/fitDps.py index dc402706d..7bdc68ca0 100644 --- a/eos/graph/fitDps.py +++ b/eos/graph/fitDps.py @@ -95,11 +95,10 @@ class FitDpsGraph(Graph): targetSigRad = explosionRadius if targetSigRad is None else targetSigRad explosionVelocity = mod.getModifiedChargeAttr("aoeVelocity") damageReductionFactor = mod.getModifiedChargeAttr("aoeDamageReductionFactor") - damageReductionSensitivity = mod.getModifiedChargeAttr("aoeDamageReductionSensitivity") sigRadiusFactor = targetSigRad / explosionRadius if targetVelocity: - velocityFactor = (explosionVelocity / explosionRadius * targetSigRad / targetVelocity) ** (log(damageReductionFactor) / log(damageReductionSensitivity)) + velocityFactor = (explosionVelocity / explosionRadius * targetSigRad / targetVelocity) ** damageReductionFactor else: velocityFactor = 1 diff --git a/eve.db b/eve.db index 25a40b791..0c2623139 100644 Binary files a/eve.db and b/eve.db differ diff --git a/gui/builtinStatsViews/resistancesViewFull.py b/gui/builtinStatsViews/resistancesViewFull.py index 85f9dbd06..55daa813d 100644 --- a/gui/builtinStatsViews/resistancesViewFull.py +++ b/gui/builtinStatsViews/resistancesViewFull.py @@ -168,10 +168,6 @@ class ResistancesViewFull(StatsView): self.showEffective = True wx.PostEvent(self.mainFrame, EffectiveHpToggled(effective=True)) return - elif fit is not None and fit.ID != self.activeFit and not self.showEffective: - self.showEffective = True - wx.PostEvent(self.mainFrame, EffectiveHpToggled(effective=True)) - return self.stEHPs.SetLabel("EHP" if self.showEffective else "HP") self.activeFit = fit.ID if fit is not None else None diff --git a/gui/builtinViewColumns/misc.py b/gui/builtinViewColumns/misc.py index 9baee4726..0c7f9ef8f 100644 --- a/gui/builtinViewColumns/misc.py +++ b/gui/builtinViewColumns/misc.py @@ -86,7 +86,7 @@ class Miscellanea(ViewColumn): info.append("{0}{1}".format(n, slot[0].upper())) return "+ "+", ".join(info), "Slot Modifiers" elif itemGroup == "Energy Neutralizer": - neutAmount = stuff.getModifiedItemAttr("energyDestabilizationAmount") + neutAmount = stuff.getModifiedItemAttr("energyNeutralizerAmount") cycleTime = stuff.cycleTime if not neutAmount or not cycleTime: return "", None @@ -429,8 +429,8 @@ class Miscellanea(ViewColumn): tooltip = "{0} repaired per second".format(formatList(ttEntries)).capitalize() return text, tooltip elif itemGroup == "Energy Neutralizer Drone": - neutAmount = stuff.getModifiedItemAttr("energyDestabilizationAmount") - cycleTime = stuff.getModifiedItemAttr("duration") + neutAmount = stuff.getModifiedItemAttr("energyNeutralizerAmount") + cycleTime = stuff.getModifiedItemAttr("energyNeutralizerDuration") if not neutAmount or not cycleTime: return "", None capPerSec = float(-neutAmount) * 1000 / cycleTime diff --git a/gui/builtinViews/entityEditor.py b/gui/builtinViews/entityEditor.py index 112c1c63e..b62060357 100644 --- a/gui/builtinViews/entityEditor.py +++ b/gui/builtinViews/entityEditor.py @@ -98,7 +98,8 @@ class EntityEditor (wx.Panel): dlg.CenterOnParent() if dlg.ShowModal() == wx.ID_OK: - new = self.DoNew(dlg.GetValue().strip()) + # using dlg.textctrl.GetValue instead of simply dlg.GetValue because the proper way does not work in wxPython 2.8 + new = self.DoNew(dlg.txtctrl.GetValue().strip()) self.refreshEntityList(new) wx.PostEvent(self.entityChoices, wx.CommandEvent(wx.wxEVT_COMMAND_CHOICE_SELECTED)) else: @@ -114,7 +115,7 @@ class EntityEditor (wx.Panel): dlg.CenterOnParent() if dlg.ShowModal() == wx.ID_OK: - copy = self.DoCopy(active, dlg.GetValue().strip()) + copy = self.DoCopy(active, dlg.txtctrl.GetValue().strip()) self.refreshEntityList(copy) wx.PostEvent(self.entityChoices, wx.CommandEvent(wx.wxEVT_COMMAND_CHOICE_SELECTED)) @@ -128,7 +129,7 @@ class EntityEditor (wx.Panel): dlg.CenterOnParent() if dlg.ShowModal() == wx.ID_OK: - self.DoRename(active, dlg.GetValue().strip()) + self.DoRename(active, dlg.txtctrl.GetValue().strip()) self.refreshEntityList(active) wx.PostEvent(self.entityChoices, wx.CommandEvent(wx.wxEVT_COMMAND_CHOICE_SELECTED)) diff --git a/gui/characterEditor.py b/gui/characterEditor.py index 862660fbb..bf7db18bf 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -37,14 +37,14 @@ class CharacterTextValidor(BaseValidator): return CharacterTextValidor() def Validate(self, win): - profileEditor = win.Parent + entityEditor = win.parent textCtrl = self.GetWindow() text = textCtrl.GetValue().strip() try: if len(text) == 0: raise ValueError("You must supply a name for the Character!") - elif text in [x.name for x in profileEditor.entityEditor.choices]: + elif text in [x.name for x in entityEditor.choices]: raise ValueError("Character name already in use, please choose another.") return True diff --git a/gui/itemStats.py b/gui/itemStats.py index c64164a47..b56da94ca 100644 --- a/gui/itemStats.py +++ b/gui/itemStats.py @@ -150,6 +150,8 @@ class ItemStatsContainer ( wx.Panel ): def __init__( self, parent, stuff, item, context = None): wx.Panel.__init__ ( self, parent ) + sMkt = service.Market.getInstance() + mainSizer = wx.BoxSizer( wx.VERTICAL ) self.nbContainer = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 ) @@ -165,6 +167,11 @@ class ItemStatsContainer ( wx.Panel ): self.params = ItemParams(self.nbContainer, stuff, item, context) self.nbContainer.AddPage(self.params, "Attributes") + items = sMkt.getVariationsByItems([item]) + if len(items) > 1: + self.compare = ItemCompare(self.nbContainer, stuff, item, items, context) + self.nbContainer.AddPage(self.compare, "Compare") + self.reqs = ItemRequirements(self.nbContainer, stuff, item) self.nbContainer.AddPage(self.reqs, "Requirements") @@ -385,9 +392,9 @@ class ItemParams (wx.Panel): attrIcon = self.imageList.Add(icon) else: - attrIcon = self.imageList.Add(BitmapLoader.getBitmap("07_15", "icons")) + attrIcon = self.imageList.Add(BitmapLoader.getBitmap("7_15", "icons")) else: - attrIcon = self.imageList.Add(BitmapLoader.getBitmap("07_15", "icons")) + attrIcon = self.imageList.Add(BitmapLoader.getBitmap("7_15", "icons")) index = self.paramList.InsertImageStringItem(sys.maxint, attrName, attrIcon) @@ -459,6 +466,159 @@ class ItemParams (wx.Panel): else: return "%s %s" % (formatAmount(value, 3, 0),unitName) +class ItemCompare(wx.Panel): + def __init__(self, parent, stuff, item, items, context=None): + wx.Panel.__init__(self, parent) + mainSizer = wx.BoxSizer(wx.VERTICAL) + + self.paramList = AutoListCtrl(self, wx.ID_ANY, + style= # wx.LC_HRULES | + # wx.LC_NO_HEADER | + wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.NO_BORDER) + mainSizer.Add(self.paramList, 1, wx.ALL | wx.EXPAND, 0) + self.SetSizer(mainSizer) + + self.toggleView = 1 + self.stuff = stuff + self.item = item + self.items = sorted(items, key=lambda x: x.attributes['metaLevel'].value) + self.attrs = {} + + # get a dict of attrName: attrInfo of all unique attributes across all items + for item in self.items: + for attr in item.attributes.keys(): + if item.attributes[attr].info.displayName: + self.attrs[attr] = item.attributes[attr].info + + # Process attributes for items and find ones that differ + for attr in self.attrs.keys(): + value = None + + for item in self.items: + # we can automatically break here if this item doesn't have the attribute, + # as that means at least one item did + if attr not in item.attributes: + break + + # this is the first attribute for the item set, set the initial value + if value is None: + value = item.attributes[attr].value + continue + + if attr not in item.attributes or item.attributes[attr].value != value: + break + else: + # attribute values were all the same, delete + del self.attrs[attr] + + self.m_staticline = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, + wx.LI_HORIZONTAL) + mainSizer.Add(self.m_staticline, 0, wx.EXPAND) + bSizer = wx.BoxSizer(wx.HORIZONTAL) + + self.totalAttrsLabel = wx.StaticText(self, wx.ID_ANY, u" ", wx.DefaultPosition, wx.DefaultSize, 0) + bSizer.Add(self.totalAttrsLabel, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT) + + self.toggleViewBtn = wx.ToggleButton(self, wx.ID_ANY, u"Toggle view mode", wx.DefaultPosition, + wx.DefaultSize, 0) + bSizer.Add(self.toggleViewBtn, 0, wx.ALIGN_CENTER_VERTICAL) + + if stuff is not None: + self.refreshBtn = wx.Button(self, wx.ID_ANY, u"Refresh", wx.DefaultPosition, wx.DefaultSize, + wx.BU_EXACTFIT) + bSizer.Add(self.refreshBtn, 0, wx.ALIGN_CENTER_VERTICAL) + self.refreshBtn.Bind(wx.EVT_BUTTON, self.RefreshValues) + + mainSizer.Add(bSizer, 0, wx.ALIGN_RIGHT) + + self.PopulateList() + + self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleViewMode) + + def UpdateList(self): + self.Freeze() + self.paramList.ClearAll() + self.PopulateList() + self.Thaw() + self.paramList.resizeLastColumn(100) + + def RefreshValues(self, event): + self.UpdateList() + event.Skip() + + def ToggleViewMode(self, event): + self.toggleView *= -1 + self.UpdateList() + event.Skip() + + def PopulateList(self): + self.paramList.InsertColumn(0, "Item") + self.paramList.SetColumnWidth(0, 200) + + for i, attr in enumerate(self.attrs.keys()): + name = self.attrs[attr].displayName if self.attrs[attr].displayName else attr + self.paramList.InsertColumn(i+1, name) + self.paramList.SetColumnWidth(i+1, 120) + + for item in self.items: + i = self.paramList.InsertStringItem(sys.maxint, item.name) + for x, attr in enumerate(self.attrs.keys()): + if attr in item.attributes: + info = self.attrs[attr] + value = item.attributes[attr].value + if self.toggleView != 1: + valueUnit = str(value) + if info and info.unit: + valueUnit = self.TranslateValueUnit(value, info.unit.displayName, info.unit.name) + else: + valueUnit = formatAmount(value, 3, 0, 0) + + self.paramList.SetStringItem(i, x+1, valueUnit) + + self.paramList.RefreshRows() + self.Layout() + + def TranslateValueUnit(self, value, unitName, unitDisplayName): + def itemIDCallback(): + item = service.Market.getInstance().getItem(value) + return "%s (%d)" % (item.name, value) if item is not None else str(value) + + def groupIDCallback(): + group = service.Market.getInstance().getGroup(value) + return "%s (%d)" % (group.name, value) if group is not None else str(value) + + def attributeIDCallback(): + attribute = service.Attribute.getInstance().getAttributeInfo(value) + return "%s (%d)" % (attribute.name.capitalize(), value) + + trans = {"Inverse Absolute Percent": (lambda: (1 - value) * 100, unitName), + "Inversed Modifier Percent": (lambda: (1 - value) * 100, unitName), + "Modifier Percent": ( + lambda: ("%+.2f" if ((value - 1) * 100) % 1 else "%+d") % ((value - 1) * 100), unitName), + "Volume": (lambda: value, u"m\u00B3"), + "Sizeclass": (lambda: value, ""), + "Absolute Percent": (lambda: (value * 100), unitName), + "Milliseconds": (lambda: value / 1000.0, unitName), + "typeID": (itemIDCallback, ""), + "groupID": (groupIDCallback, ""), + "attributeID": (attributeIDCallback, "")} + + override = trans.get(unitDisplayName) + if override is not None: + + if type(override[0]()) == type(str()): + fvalue = override[0]() + else: + v = override[0]() + if isinstance(v, (int, float, long)): + fvalue = formatAmount(v, 3, 0, 0) + else: + fvalue = v + return "%s %s" % (fvalue, override[1]) + else: + return "%s %s" % (formatAmount(value, 3, 0), unitName) + + ########################################################################### ## Class ItemRequirements ########################################################################### @@ -798,9 +958,9 @@ class ItemAffectedBy (wx.Panel): icon = BitmapLoader.getBitmap("transparent16x16", "gui") attrIcon = self.imageList.Add(icon) else: - attrIcon = self.imageList.Add(BitmapLoader.getBitmap("07_15", "icons")) + attrIcon = self.imageList.Add(BitmapLoader.getBitmap("7_15", "icons")) else: - attrIcon = self.imageList.Add(BitmapLoader.getBitmap("07_15", "icons")) + attrIcon = self.imageList.Add(BitmapLoader.getBitmap("7_15", "icons")) if self.showRealNames: display = attrName @@ -957,9 +1117,9 @@ class ItemAffectedBy (wx.Panel): attrIcon = self.imageList.Add(icon) else: - attrIcon = self.imageList.Add(BitmapLoader.getBitmap("07_15", "icons")) + attrIcon = self.imageList.Add(BitmapLoader.getBitmap("7_15", "icons")) else: - attrIcon = self.imageList.Add(BitmapLoader.getBitmap("07_15", "icons")) + attrIcon = self.imageList.Add(BitmapLoader.getBitmap("7_15", "icons")) if attrModifier == "s*": attrModifier = "*" diff --git a/gui/patternEditor.py b/gui/patternEditor.py index c36a1e80c..171eed7a5 100644 --- a/gui/patternEditor.py +++ b/gui/patternEditor.py @@ -36,14 +36,14 @@ class DmgPatternTextValidor(BaseValidator): return DmgPatternTextValidor() def Validate(self, win): - profileEditor = win.Parent + entityEditor = win.parent textCtrl = self.GetWindow() text = textCtrl.GetValue().strip() try: if len(text) == 0: raise ValueError("You must supply a name for your Damage Profile!") - elif text in [x.name for x in profileEditor.entityEditor.choices]: + elif text in [x.name for x in entityEditor.choices]: raise ValueError("Damage Profile name already in use, please choose another.") return True diff --git a/gui/resistsEditor.py b/gui/resistsEditor.py index 097b8ad9d..37d04b032 100644 --- a/gui/resistsEditor.py +++ b/gui/resistsEditor.py @@ -33,14 +33,14 @@ class TargetResistsTextValidor(BaseValidator): return TargetResistsTextValidor() def Validate(self, win): - profileEditor = win.parent.Parent + entityEditor = win.parent textCtrl = self.GetWindow() text = textCtrl.GetValue().strip() try: if len(text) == 0: raise ValueError("You must supply a name for your Target Resist Profile!") - elif text in [x.name for x in profileEditor.entityEditor.choices]: + elif text in [x.name for x in entityEditor.choices]: raise ValueError("Target Resist Profile name already in use, please choose another.") return True diff --git a/gui/setEditor.py b/gui/setEditor.py index 4e8baa9ed..84090f6ff 100644 --- a/gui/setEditor.py +++ b/gui/setEditor.py @@ -36,14 +36,14 @@ class ImplantTextValidor(BaseValidator): return ImplantTextValidor() def Validate(self, win): - profileEditor = win.parent.Parent + entityEditor = win.parent textCtrl = self.GetWindow() text = textCtrl.GetValue().strip() try: if len(text) == 0: raise ValueError("You must supply a name for the Implant Set!") - elif text in [x.name for x in profileEditor.entityEditor.choices]: + elif text in [x.name for x in entityEditor.choices]: raise ValueError("Imlplant Set name already in use, please choose another.") return True diff --git a/imgs/icons/03_11.png b/imgs/icons/03_11.png deleted file mode 100644 index 98f8bd62f..000000000 Binary files a/imgs/icons/03_11.png and /dev/null differ diff --git a/imgs/icons/11_04.png b/imgs/icons/11_4.png similarity index 100% rename from imgs/icons/11_04.png rename to imgs/icons/11_4.png diff --git a/imgs/icons/11_05.png b/imgs/icons/11_5.png similarity index 100% rename from imgs/icons/11_05.png rename to imgs/icons/11_5.png diff --git a/imgs/icons/12_04.png b/imgs/icons/12_4.png similarity index 100% rename from imgs/icons/12_04.png rename to imgs/icons/12_4.png diff --git a/imgs/icons/12_06.png b/imgs/icons/12_6.png similarity index 100% rename from imgs/icons/12_06.png rename to imgs/icons/12_6.png diff --git a/imgs/icons/12_07.png b/imgs/icons/12_7.png similarity index 100% rename from imgs/icons/12_07.png rename to imgs/icons/12_7.png diff --git a/imgs/icons/12_08.png b/imgs/icons/12_8.png similarity index 100% rename from imgs/icons/12_08.png rename to imgs/icons/12_8.png diff --git a/imgs/icons/12_09.png b/imgs/icons/12_9.png similarity index 100% rename from imgs/icons/12_09.png rename to imgs/icons/12_9.png diff --git a/imgs/icons/13_01.png b/imgs/icons/13_1.png similarity index 100% rename from imgs/icons/13_01.png rename to imgs/icons/13_1.png diff --git a/imgs/icons/13_02.png b/imgs/icons/13_2.png similarity index 100% rename from imgs/icons/13_02.png rename to imgs/icons/13_2.png diff --git a/imgs/icons/13_03.png b/imgs/icons/13_3.png similarity index 100% rename from imgs/icons/13_03.png rename to imgs/icons/13_3.png diff --git a/imgs/icons/13_04.png b/imgs/icons/13_4.png similarity index 100% rename from imgs/icons/13_04.png rename to imgs/icons/13_4.png diff --git a/imgs/icons/13_05.png b/imgs/icons/13_5.png similarity index 100% rename from imgs/icons/13_05.png rename to imgs/icons/13_5.png diff --git a/imgs/icons/13_06.png b/imgs/icons/13_6.png similarity index 100% rename from imgs/icons/13_06.png rename to imgs/icons/13_6.png diff --git a/imgs/icons/13_07.png b/imgs/icons/13_7.png similarity index 100% rename from imgs/icons/13_07.png rename to imgs/icons/13_7.png diff --git a/imgs/icons/13_08.png b/imgs/icons/13_8.png similarity index 100% rename from imgs/icons/13_08.png rename to imgs/icons/13_8.png diff --git a/imgs/icons/13_09.png b/imgs/icons/13_9.png similarity index 100% rename from imgs/icons/13_09.png rename to imgs/icons/13_9.png diff --git a/imgs/icons/14_01.png b/imgs/icons/14_1.png similarity index 100% rename from imgs/icons/14_01.png rename to imgs/icons/14_1.png diff --git a/imgs/icons/14_02.png b/imgs/icons/14_2.png similarity index 100% rename from imgs/icons/14_02.png rename to imgs/icons/14_2.png diff --git a/imgs/icons/14_03.png b/imgs/icons/14_3.png similarity index 100% rename from imgs/icons/14_03.png rename to imgs/icons/14_3.png diff --git a/imgs/icons/14_04.png b/imgs/icons/14_4.png similarity index 100% rename from imgs/icons/14_04.png rename to imgs/icons/14_4.png diff --git a/imgs/icons/14_05.png b/imgs/icons/14_5.png similarity index 100% rename from imgs/icons/14_05.png rename to imgs/icons/14_5.png diff --git a/imgs/icons/14_06.png b/imgs/icons/14_6.png similarity index 100% rename from imgs/icons/14_06.png rename to imgs/icons/14_6.png diff --git a/imgs/icons/14_07.png b/imgs/icons/14_7.png similarity index 100% rename from imgs/icons/14_07.png rename to imgs/icons/14_7.png diff --git a/imgs/icons/14_08.png b/imgs/icons/14_8.png similarity index 100% rename from imgs/icons/14_08.png rename to imgs/icons/14_8.png diff --git a/imgs/icons/14_09.png b/imgs/icons/14_9.png similarity index 100% rename from imgs/icons/14_09.png rename to imgs/icons/14_9.png diff --git a/imgs/icons/15_01.png b/imgs/icons/15_1.png similarity index 100% rename from imgs/icons/15_01.png rename to imgs/icons/15_1.png diff --git a/imgs/icons/15_02.png b/imgs/icons/15_2.png similarity index 100% rename from imgs/icons/15_02.png rename to imgs/icons/15_2.png diff --git a/imgs/icons/15_03.png b/imgs/icons/15_3.png similarity index 100% rename from imgs/icons/15_03.png rename to imgs/icons/15_3.png diff --git a/imgs/icons/15_04.png b/imgs/icons/15_4.png similarity index 100% rename from imgs/icons/15_04.png rename to imgs/icons/15_4.png diff --git a/imgs/icons/15_05.png b/imgs/icons/15_5.png similarity index 100% rename from imgs/icons/15_05.png rename to imgs/icons/15_5.png diff --git a/imgs/icons/15_06.png b/imgs/icons/15_6.png similarity index 100% rename from imgs/icons/15_06.png rename to imgs/icons/15_6.png diff --git a/imgs/icons/15_07.png b/imgs/icons/15_7.png similarity index 100% rename from imgs/icons/15_07.png rename to imgs/icons/15_7.png diff --git a/imgs/icons/15_08.png b/imgs/icons/15_8.png similarity index 100% rename from imgs/icons/15_08.png rename to imgs/icons/15_8.png diff --git a/imgs/icons/15_09.png b/imgs/icons/15_9.png similarity index 100% rename from imgs/icons/15_09.png rename to imgs/icons/15_9.png diff --git a/imgs/icons/16_01.png b/imgs/icons/16_1.png similarity index 100% rename from imgs/icons/16_01.png rename to imgs/icons/16_1.png diff --git a/imgs/icons/16_02.png b/imgs/icons/16_2.png similarity index 100% rename from imgs/icons/16_02.png rename to imgs/icons/16_2.png diff --git a/imgs/icons/16_03.png b/imgs/icons/16_3.png similarity index 100% rename from imgs/icons/16_03.png rename to imgs/icons/16_3.png diff --git a/imgs/icons/16_04.png b/imgs/icons/16_4.png similarity index 100% rename from imgs/icons/16_04.png rename to imgs/icons/16_4.png diff --git a/imgs/icons/16_05.png b/imgs/icons/16_5.png similarity index 100% rename from imgs/icons/16_05.png rename to imgs/icons/16_5.png diff --git a/imgs/icons/16_06.png b/imgs/icons/16_6.png similarity index 100% rename from imgs/icons/16_06.png rename to imgs/icons/16_6.png diff --git a/imgs/icons/16_07.png b/imgs/icons/16_7.png similarity index 100% rename from imgs/icons/16_07.png rename to imgs/icons/16_7.png diff --git a/imgs/icons/16_08.png b/imgs/icons/16_8.png similarity index 100% rename from imgs/icons/16_08.png rename to imgs/icons/16_8.png diff --git a/imgs/icons/16_09.png b/imgs/icons/16_9.png similarity index 100% rename from imgs/icons/16_09.png rename to imgs/icons/16_9.png diff --git a/imgs/icons/01_01.png b/imgs/icons/1_1.png similarity index 100% rename from imgs/icons/01_01.png rename to imgs/icons/1_1.png diff --git a/imgs/icons/01_10.png b/imgs/icons/1_10.png similarity index 100% rename from imgs/icons/01_10.png rename to imgs/icons/1_10.png diff --git a/imgs/icons/01_11.png b/imgs/icons/1_11.png similarity index 100% rename from imgs/icons/01_11.png rename to imgs/icons/1_11.png diff --git a/imgs/icons/01_13.png b/imgs/icons/1_13.png similarity index 100% rename from imgs/icons/01_13.png rename to imgs/icons/1_13.png diff --git a/imgs/icons/01_15.png b/imgs/icons/1_15.png similarity index 100% rename from imgs/icons/01_15.png rename to imgs/icons/1_15.png diff --git a/imgs/icons/01_16.png b/imgs/icons/1_16.png similarity index 100% rename from imgs/icons/01_16.png rename to imgs/icons/1_16.png diff --git a/imgs/icons/01_02.png b/imgs/icons/1_2.png similarity index 100% rename from imgs/icons/01_02.png rename to imgs/icons/1_2.png diff --git a/imgs/icons/01_03.png b/imgs/icons/1_3.png similarity index 100% rename from imgs/icons/01_03.png rename to imgs/icons/1_3.png diff --git a/imgs/icons/01_04.png b/imgs/icons/1_4.png similarity index 100% rename from imgs/icons/01_04.png rename to imgs/icons/1_4.png diff --git a/imgs/icons/01_05.png b/imgs/icons/1_5.png similarity index 100% rename from imgs/icons/01_05.png rename to imgs/icons/1_5.png diff --git a/imgs/icons/01_06.png b/imgs/icons/1_6.png similarity index 100% rename from imgs/icons/01_06.png rename to imgs/icons/1_6.png diff --git a/imgs/icons/01_07.png b/imgs/icons/1_7.png similarity index 100% rename from imgs/icons/01_07.png rename to imgs/icons/1_7.png diff --git a/imgs/icons/01_08.png b/imgs/icons/1_8.png similarity index 100% rename from imgs/icons/01_08.png rename to imgs/icons/1_8.png diff --git a/imgs/icons/01_09.png b/imgs/icons/1_9.png similarity index 100% rename from imgs/icons/01_09.png rename to imgs/icons/1_9.png diff --git a/imgs/icons/20_01.png b/imgs/icons/20_1.png similarity index 100% rename from imgs/icons/20_01.png rename to imgs/icons/20_1.png diff --git a/imgs/icons/20_02.png b/imgs/icons/20_2.png similarity index 100% rename from imgs/icons/20_02.png rename to imgs/icons/20_2.png diff --git a/imgs/icons/20_03.png b/imgs/icons/20_3.png similarity index 100% rename from imgs/icons/20_03.png rename to imgs/icons/20_3.png diff --git a/imgs/icons/20_04.png b/imgs/icons/20_4.png similarity index 100% rename from imgs/icons/20_04.png rename to imgs/icons/20_4.png diff --git a/imgs/icons/20_05.png b/imgs/icons/20_5.png similarity index 100% rename from imgs/icons/20_05.png rename to imgs/icons/20_5.png diff --git a/imgs/icons/20_06.png b/imgs/icons/20_6.png similarity index 100% rename from imgs/icons/20_06.png rename to imgs/icons/20_6.png diff --git a/imgs/icons/20_07.png b/imgs/icons/20_7.png similarity index 100% rename from imgs/icons/20_07.png rename to imgs/icons/20_7.png diff --git a/imgs/icons/20_08.png b/imgs/icons/20_8.png similarity index 100% rename from imgs/icons/20_08.png rename to imgs/icons/20_8.png diff --git a/imgs/icons/20_09.png b/imgs/icons/20_9.png similarity index 100% rename from imgs/icons/20_09.png rename to imgs/icons/20_9.png diff --git a/imgs/icons/21_01.png b/imgs/icons/21_1.png similarity index 100% rename from imgs/icons/21_01.png rename to imgs/icons/21_1.png diff --git a/imgs/icons/21_02.png b/imgs/icons/21_2.png similarity index 100% rename from imgs/icons/21_02.png rename to imgs/icons/21_2.png diff --git a/imgs/icons/21_03.png b/imgs/icons/21_3.png similarity index 100% rename from imgs/icons/21_03.png rename to imgs/icons/21_3.png diff --git a/imgs/icons/21_05.png b/imgs/icons/21_5.png similarity index 100% rename from imgs/icons/21_05.png rename to imgs/icons/21_5.png diff --git a/imgs/icons/21_06.png b/imgs/icons/21_6.png similarity index 100% rename from imgs/icons/21_06.png rename to imgs/icons/21_6.png diff --git a/imgs/icons/21_07.png b/imgs/icons/21_7.png similarity index 100% rename from imgs/icons/21_07.png rename to imgs/icons/21_7.png diff --git a/imgs/icons/21_09.png b/imgs/icons/21_9.png similarity index 100% rename from imgs/icons/21_09.png rename to imgs/icons/21_9.png diff --git a/imgs/icons/22_01.png b/imgs/icons/22_1.png similarity index 100% rename from imgs/icons/22_01.png rename to imgs/icons/22_1.png diff --git a/imgs/icons/22_02.png b/imgs/icons/22_2.png similarity index 100% rename from imgs/icons/22_02.png rename to imgs/icons/22_2.png diff --git a/imgs/icons/22_03.png b/imgs/icons/22_3.png similarity index 100% rename from imgs/icons/22_03.png rename to imgs/icons/22_3.png diff --git a/imgs/icons/22_04.png b/imgs/icons/22_4.png similarity index 100% rename from imgs/icons/22_04.png rename to imgs/icons/22_4.png diff --git a/imgs/icons/22_05.png b/imgs/icons/22_5.png similarity index 100% rename from imgs/icons/22_05.png rename to imgs/icons/22_5.png diff --git a/imgs/icons/22_06.png b/imgs/icons/22_6.png similarity index 100% rename from imgs/icons/22_06.png rename to imgs/icons/22_6.png diff --git a/imgs/icons/22_07.png b/imgs/icons/22_7.png similarity index 100% rename from imgs/icons/22_07.png rename to imgs/icons/22_7.png diff --git a/imgs/icons/22_09.png b/imgs/icons/22_9.png similarity index 100% rename from imgs/icons/22_09.png rename to imgs/icons/22_9.png diff --git a/imgs/icons/25_04.png b/imgs/icons/25_4.png similarity index 100% rename from imgs/icons/25_04.png rename to imgs/icons/25_4.png diff --git a/imgs/icons/26_01.png b/imgs/icons/26_1.png similarity index 100% rename from imgs/icons/26_01.png rename to imgs/icons/26_1.png diff --git a/imgs/icons/27_05.png b/imgs/icons/27_5.png similarity index 100% rename from imgs/icons/27_05.png rename to imgs/icons/27_5.png diff --git a/imgs/icons/27_09.png b/imgs/icons/27_9.png similarity index 100% rename from imgs/icons/27_09.png rename to imgs/icons/27_9.png diff --git a/imgs/icons/02_10.png b/imgs/icons/2_10.png similarity index 100% rename from imgs/icons/02_10.png rename to imgs/icons/2_10.png diff --git a/imgs/icons/02_11.png b/imgs/icons/2_11.png similarity index 100% rename from imgs/icons/02_11.png rename to imgs/icons/2_11.png diff --git a/imgs/icons/02_12.png b/imgs/icons/2_12.png similarity index 100% rename from imgs/icons/02_12.png rename to imgs/icons/2_12.png diff --git a/imgs/icons/02_14.png b/imgs/icons/2_14.png similarity index 100% rename from imgs/icons/02_14.png rename to imgs/icons/2_14.png diff --git a/imgs/icons/02_16.png b/imgs/icons/2_16.png similarity index 100% rename from imgs/icons/02_16.png rename to imgs/icons/2_16.png diff --git a/imgs/icons/02_02.png b/imgs/icons/2_2.png similarity index 100% rename from imgs/icons/02_02.png rename to imgs/icons/2_2.png diff --git a/imgs/icons/02_03.png b/imgs/icons/2_3.png similarity index 100% rename from imgs/icons/02_03.png rename to imgs/icons/2_3.png diff --git a/imgs/icons/02_04.png b/imgs/icons/2_4.png similarity index 100% rename from imgs/icons/02_04.png rename to imgs/icons/2_4.png diff --git a/imgs/icons/02_05.png b/imgs/icons/2_5.png similarity index 100% rename from imgs/icons/02_05.png rename to imgs/icons/2_5.png diff --git a/imgs/icons/02_07.png b/imgs/icons/2_7.png similarity index 100% rename from imgs/icons/02_07.png rename to imgs/icons/2_7.png diff --git a/imgs/icons/02_09.png b/imgs/icons/2_9.png similarity index 100% rename from imgs/icons/02_09.png rename to imgs/icons/2_9.png diff --git a/imgs/icons/34_01.png b/imgs/icons/34_1.png similarity index 100% rename from imgs/icons/34_01.png rename to imgs/icons/34_1.png diff --git a/imgs/icons/34_02.png b/imgs/icons/34_2.png similarity index 100% rename from imgs/icons/34_02.png rename to imgs/icons/34_2.png diff --git a/imgs/icons/35_01.png b/imgs/icons/35_1.png similarity index 100% rename from imgs/icons/35_01.png rename to imgs/icons/35_1.png diff --git a/imgs/icons/35_03.png b/imgs/icons/35_3.png similarity index 100% rename from imgs/icons/35_03.png rename to imgs/icons/35_3.png diff --git a/imgs/icons/35_09.png b/imgs/icons/35_9.png similarity index 100% rename from imgs/icons/35_09.png rename to imgs/icons/35_9.png diff --git a/imgs/icons/03_01.png b/imgs/icons/3_1.png similarity index 100% rename from imgs/icons/03_01.png rename to imgs/icons/3_1.png diff --git a/imgs/icons/03_10.png b/imgs/icons/3_10.png similarity index 100% rename from imgs/icons/03_10.png rename to imgs/icons/3_10.png diff --git a/imgs/icons/3_11.png b/imgs/icons/3_11.png new file mode 100644 index 000000000..d179363e2 Binary files /dev/null and b/imgs/icons/3_11.png differ diff --git a/imgs/icons/03_12.png b/imgs/icons/3_12.png similarity index 100% rename from imgs/icons/03_12.png rename to imgs/icons/3_12.png diff --git a/imgs/icons/03_13.png b/imgs/icons/3_13.png similarity index 100% rename from imgs/icons/03_13.png rename to imgs/icons/3_13.png diff --git a/imgs/icons/03_02.png b/imgs/icons/3_2.png similarity index 100% rename from imgs/icons/03_02.png rename to imgs/icons/3_2.png diff --git a/imgs/icons/03_04.png b/imgs/icons/3_4.png similarity index 100% rename from imgs/icons/03_04.png rename to imgs/icons/3_4.png diff --git a/imgs/icons/03_05.png b/imgs/icons/3_5.png similarity index 100% rename from imgs/icons/03_05.png rename to imgs/icons/3_5.png diff --git a/imgs/icons/03_06.png b/imgs/icons/3_6.png similarity index 100% rename from imgs/icons/03_06.png rename to imgs/icons/3_6.png diff --git a/imgs/icons/03_08.png b/imgs/icons/3_8.png similarity index 100% rename from imgs/icons/03_08.png rename to imgs/icons/3_8.png diff --git a/imgs/icons/03_09.png b/imgs/icons/3_9.png similarity index 100% rename from imgs/icons/03_09.png rename to imgs/icons/3_9.png diff --git a/imgs/icons/48_01.png b/imgs/icons/48_1.png similarity index 100% rename from imgs/icons/48_01.png rename to imgs/icons/48_1.png diff --git a/imgs/icons/48_02.png b/imgs/icons/48_2.png similarity index 100% rename from imgs/icons/48_02.png rename to imgs/icons/48_2.png diff --git a/imgs/icons/48_03.png b/imgs/icons/48_3.png similarity index 100% rename from imgs/icons/48_03.png rename to imgs/icons/48_3.png diff --git a/imgs/icons/48_04.png b/imgs/icons/48_4.png similarity index 100% rename from imgs/icons/48_04.png rename to imgs/icons/48_4.png diff --git a/imgs/icons/48_05.png b/imgs/icons/48_5.png similarity index 100% rename from imgs/icons/48_05.png rename to imgs/icons/48_5.png diff --git a/imgs/icons/48_06.png b/imgs/icons/48_6.png similarity index 100% rename from imgs/icons/48_06.png rename to imgs/icons/48_6.png diff --git a/imgs/icons/48_07.png b/imgs/icons/48_7.png similarity index 100% rename from imgs/icons/48_07.png rename to imgs/icons/48_7.png diff --git a/imgs/icons/48_08.png b/imgs/icons/48_8.png similarity index 100% rename from imgs/icons/48_08.png rename to imgs/icons/48_8.png diff --git a/imgs/icons/48_09.png b/imgs/icons/48_9.png similarity index 100% rename from imgs/icons/48_09.png rename to imgs/icons/48_9.png diff --git a/imgs/icons/49_05.png b/imgs/icons/49_5.png similarity index 100% rename from imgs/icons/49_05.png rename to imgs/icons/49_5.png diff --git a/imgs/icons/49_06.png b/imgs/icons/49_6.png similarity index 100% rename from imgs/icons/49_06.png rename to imgs/icons/49_6.png diff --git a/imgs/icons/49_07.png b/imgs/icons/49_7.png similarity index 100% rename from imgs/icons/49_07.png rename to imgs/icons/49_7.png diff --git a/imgs/icons/04_01.png b/imgs/icons/4_1.png similarity index 100% rename from imgs/icons/04_01.png rename to imgs/icons/4_1.png diff --git a/imgs/icons/04_10.png b/imgs/icons/4_10.png similarity index 100% rename from imgs/icons/04_10.png rename to imgs/icons/4_10.png diff --git a/imgs/icons/04_11.png b/imgs/icons/4_11.png similarity index 100% rename from imgs/icons/04_11.png rename to imgs/icons/4_11.png diff --git a/imgs/icons/04_12.png b/imgs/icons/4_12.png similarity index 100% rename from imgs/icons/04_12.png rename to imgs/icons/4_12.png diff --git a/imgs/icons/04_13.png b/imgs/icons/4_13.png similarity index 100% rename from imgs/icons/04_13.png rename to imgs/icons/4_13.png diff --git a/imgs/icons/04_09.png b/imgs/icons/4_9.png similarity index 100% rename from imgs/icons/04_09.png rename to imgs/icons/4_9.png diff --git a/imgs/icons/50_03.png b/imgs/icons/50_3.png similarity index 100% rename from imgs/icons/50_03.png rename to imgs/icons/50_3.png diff --git a/imgs/icons/52_01.png b/imgs/icons/52_1.png similarity index 100% rename from imgs/icons/52_01.png rename to imgs/icons/52_1.png diff --git a/imgs/icons/52_02.png b/imgs/icons/52_2.png similarity index 100% rename from imgs/icons/52_02.png rename to imgs/icons/52_2.png diff --git a/imgs/icons/52_03.png b/imgs/icons/52_3.png similarity index 100% rename from imgs/icons/52_03.png rename to imgs/icons/52_3.png diff --git a/imgs/icons/52_04.png b/imgs/icons/52_4.png similarity index 100% rename from imgs/icons/52_04.png rename to imgs/icons/52_4.png diff --git a/imgs/icons/52_05.png b/imgs/icons/52_5.png similarity index 100% rename from imgs/icons/52_05.png rename to imgs/icons/52_5.png diff --git a/imgs/icons/52_06.png b/imgs/icons/52_6.png similarity index 100% rename from imgs/icons/52_06.png rename to imgs/icons/52_6.png diff --git a/imgs/icons/52_07.png b/imgs/icons/52_7.png similarity index 100% rename from imgs/icons/52_07.png rename to imgs/icons/52_7.png diff --git a/imgs/icons/52_08.png b/imgs/icons/52_8.png similarity index 100% rename from imgs/icons/52_08.png rename to imgs/icons/52_8.png diff --git a/imgs/icons/53_01.png b/imgs/icons/53_1.png similarity index 100% rename from imgs/icons/53_01.png rename to imgs/icons/53_1.png diff --git a/imgs/icons/53_02.png b/imgs/icons/53_2.png similarity index 100% rename from imgs/icons/53_02.png rename to imgs/icons/53_2.png diff --git a/imgs/icons/53_03.png b/imgs/icons/53_3.png similarity index 100% rename from imgs/icons/53_03.png rename to imgs/icons/53_3.png diff --git a/imgs/icons/53_04.png b/imgs/icons/53_4.png similarity index 100% rename from imgs/icons/53_04.png rename to imgs/icons/53_4.png diff --git a/imgs/icons/53_05.png b/imgs/icons/53_5.png similarity index 100% rename from imgs/icons/53_05.png rename to imgs/icons/53_5.png diff --git a/imgs/icons/53_06.png b/imgs/icons/53_6.png similarity index 100% rename from imgs/icons/53_06.png rename to imgs/icons/53_6.png diff --git a/imgs/icons/53_07.png b/imgs/icons/53_7.png similarity index 100% rename from imgs/icons/53_07.png rename to imgs/icons/53_7.png diff --git a/imgs/icons/53_08.png b/imgs/icons/53_8.png similarity index 100% rename from imgs/icons/53_08.png rename to imgs/icons/53_8.png diff --git a/imgs/icons/53_09.png b/imgs/icons/53_9.png similarity index 100% rename from imgs/icons/53_09.png rename to imgs/icons/53_9.png diff --git a/imgs/icons/56_01.png b/imgs/icons/56_1.png similarity index 100% rename from imgs/icons/56_01.png rename to imgs/icons/56_1.png diff --git a/imgs/icons/56_02.png b/imgs/icons/56_2.png similarity index 100% rename from imgs/icons/56_02.png rename to imgs/icons/56_2.png diff --git a/imgs/icons/56_03.png b/imgs/icons/56_3.png similarity index 100% rename from imgs/icons/56_03.png rename to imgs/icons/56_3.png diff --git a/imgs/icons/56_04.png b/imgs/icons/56_4.png similarity index 100% rename from imgs/icons/56_04.png rename to imgs/icons/56_4.png diff --git a/imgs/icons/56_05.png b/imgs/icons/56_5.png similarity index 100% rename from imgs/icons/56_05.png rename to imgs/icons/56_5.png diff --git a/imgs/icons/56_06.png b/imgs/icons/56_6.png similarity index 100% rename from imgs/icons/56_06.png rename to imgs/icons/56_6.png diff --git a/imgs/icons/56_07.png b/imgs/icons/56_7.png similarity index 100% rename from imgs/icons/56_07.png rename to imgs/icons/56_7.png diff --git a/imgs/icons/56_08.png b/imgs/icons/56_8.png similarity index 100% rename from imgs/icons/56_08.png rename to imgs/icons/56_8.png diff --git a/imgs/icons/57_04.png b/imgs/icons/57_4.png similarity index 100% rename from imgs/icons/57_04.png rename to imgs/icons/57_4.png diff --git a/imgs/icons/05_01.png b/imgs/icons/5_1.png similarity index 100% rename from imgs/icons/05_01.png rename to imgs/icons/5_1.png diff --git a/imgs/icons/05_11.png b/imgs/icons/5_11.png similarity index 100% rename from imgs/icons/05_11.png rename to imgs/icons/5_11.png diff --git a/imgs/icons/05_12.png b/imgs/icons/5_12.png similarity index 100% rename from imgs/icons/05_12.png rename to imgs/icons/5_12.png diff --git a/imgs/icons/05_14.png b/imgs/icons/5_14.png similarity index 100% rename from imgs/icons/05_14.png rename to imgs/icons/5_14.png diff --git a/imgs/icons/05_02.png b/imgs/icons/5_2.png similarity index 100% rename from imgs/icons/05_02.png rename to imgs/icons/5_2.png diff --git a/imgs/icons/05_07.png b/imgs/icons/5_7.png similarity index 100% rename from imgs/icons/05_07.png rename to imgs/icons/5_7.png diff --git a/imgs/icons/62_01.png b/imgs/icons/62_1.png similarity index 100% rename from imgs/icons/62_01.png rename to imgs/icons/62_1.png diff --git a/imgs/icons/62_02.png b/imgs/icons/62_2.png similarity index 100% rename from imgs/icons/62_02.png rename to imgs/icons/62_2.png diff --git a/imgs/icons/62_03.png b/imgs/icons/62_3.png similarity index 100% rename from imgs/icons/62_03.png rename to imgs/icons/62_3.png diff --git a/imgs/icons/62_04.png b/imgs/icons/62_4.png similarity index 100% rename from imgs/icons/62_04.png rename to imgs/icons/62_4.png diff --git a/imgs/icons/62_05.png b/imgs/icons/62_5.png similarity index 100% rename from imgs/icons/62_05.png rename to imgs/icons/62_5.png diff --git a/imgs/icons/62_06.png b/imgs/icons/62_6.png similarity index 100% rename from imgs/icons/62_06.png rename to imgs/icons/62_6.png diff --git a/imgs/icons/62_07.png b/imgs/icons/62_7.png similarity index 100% rename from imgs/icons/62_07.png rename to imgs/icons/62_7.png diff --git a/imgs/icons/62_08.png b/imgs/icons/62_8.png similarity index 100% rename from imgs/icons/62_08.png rename to imgs/icons/62_8.png diff --git a/imgs/icons/62_09.png b/imgs/icons/62_9.png similarity index 100% rename from imgs/icons/62_09.png rename to imgs/icons/62_9.png diff --git a/imgs/icons/64_05.png b/imgs/icons/64_5.png similarity index 100% rename from imgs/icons/64_05.png rename to imgs/icons/64_5.png diff --git a/imgs/icons/64_06.png b/imgs/icons/64_6.png similarity index 100% rename from imgs/icons/64_06.png rename to imgs/icons/64_6.png diff --git a/imgs/icons/64_07.png b/imgs/icons/64_7.png similarity index 100% rename from imgs/icons/64_07.png rename to imgs/icons/64_7.png diff --git a/imgs/icons/64_08.png b/imgs/icons/64_8.png similarity index 100% rename from imgs/icons/64_08.png rename to imgs/icons/64_8.png diff --git a/imgs/icons/68_01.png b/imgs/icons/68_1.png similarity index 100% rename from imgs/icons/68_01.png rename to imgs/icons/68_1.png diff --git a/imgs/icons/68_02.png b/imgs/icons/68_2.png similarity index 100% rename from imgs/icons/68_02.png rename to imgs/icons/68_2.png diff --git a/imgs/icons/68_03.png b/imgs/icons/68_3.png similarity index 100% rename from imgs/icons/68_03.png rename to imgs/icons/68_3.png diff --git a/imgs/icons/68_04.png b/imgs/icons/68_4.png similarity index 100% rename from imgs/icons/68_04.png rename to imgs/icons/68_4.png diff --git a/imgs/icons/68_09.png b/imgs/icons/68_9.png similarity index 100% rename from imgs/icons/68_09.png rename to imgs/icons/68_9.png diff --git a/imgs/icons/70_09.png b/imgs/icons/70_09.png deleted file mode 100644 index 090145b3e..000000000 Binary files a/imgs/icons/70_09.png and /dev/null differ diff --git a/imgs/icons/70_03.png b/imgs/icons/70_3.png similarity index 100% rename from imgs/icons/70_03.png rename to imgs/icons/70_3.png diff --git a/imgs/icons/70_04.png b/imgs/icons/70_4.png similarity index 100% rename from imgs/icons/70_04.png rename to imgs/icons/70_4.png diff --git a/imgs/icons/70_05.png b/imgs/icons/70_5.png similarity index 100% rename from imgs/icons/70_05.png rename to imgs/icons/70_5.png diff --git a/imgs/icons/70_06.png b/imgs/icons/70_6.png similarity index 100% rename from imgs/icons/70_06.png rename to imgs/icons/70_6.png diff --git a/imgs/icons/70_07.png b/imgs/icons/70_7.png similarity index 100% rename from imgs/icons/70_07.png rename to imgs/icons/70_7.png diff --git a/imgs/icons/70_08.png b/imgs/icons/70_8.png similarity index 100% rename from imgs/icons/70_08.png rename to imgs/icons/70_8.png diff --git a/imgs/icons/74_01.png b/imgs/icons/74_1.png similarity index 100% rename from imgs/icons/74_01.png rename to imgs/icons/74_1.png diff --git a/imgs/icons/74_02.png b/imgs/icons/74_2.png similarity index 100% rename from imgs/icons/74_02.png rename to imgs/icons/74_2.png diff --git a/imgs/icons/74_03.png b/imgs/icons/74_3.png similarity index 100% rename from imgs/icons/74_03.png rename to imgs/icons/74_3.png diff --git a/imgs/icons/74_04.png b/imgs/icons/74_4.png similarity index 100% rename from imgs/icons/74_04.png rename to imgs/icons/74_4.png diff --git a/imgs/icons/74_05.png b/imgs/icons/74_5.png similarity index 100% rename from imgs/icons/74_05.png rename to imgs/icons/74_5.png diff --git a/imgs/icons/74_06.png b/imgs/icons/74_6.png similarity index 100% rename from imgs/icons/74_06.png rename to imgs/icons/74_6.png diff --git a/imgs/icons/74_07.png b/imgs/icons/74_7.png similarity index 100% rename from imgs/icons/74_07.png rename to imgs/icons/74_7.png diff --git a/imgs/icons/74_08.png b/imgs/icons/74_8.png similarity index 100% rename from imgs/icons/74_08.png rename to imgs/icons/74_8.png diff --git a/imgs/icons/74_09.png b/imgs/icons/74_9.png similarity index 100% rename from imgs/icons/74_09.png rename to imgs/icons/74_9.png diff --git a/imgs/icons/76_01.png b/imgs/icons/76_1.png similarity index 100% rename from imgs/icons/76_01.png rename to imgs/icons/76_1.png diff --git a/imgs/icons/76_04.png b/imgs/icons/76_4.png similarity index 100% rename from imgs/icons/76_04.png rename to imgs/icons/76_4.png diff --git a/imgs/icons/76_05.png b/imgs/icons/76_5.png similarity index 100% rename from imgs/icons/76_05.png rename to imgs/icons/76_5.png diff --git a/imgs/icons/76_06.png b/imgs/icons/76_6.png similarity index 100% rename from imgs/icons/76_06.png rename to imgs/icons/76_6.png diff --git a/imgs/icons/76_07.png b/imgs/icons/76_7.png similarity index 100% rename from imgs/icons/76_07.png rename to imgs/icons/76_7.png diff --git a/imgs/icons/76_08.png b/imgs/icons/76_8.png similarity index 100% rename from imgs/icons/76_08.png rename to imgs/icons/76_8.png diff --git a/imgs/icons/76_09.png b/imgs/icons/76_9.png similarity index 100% rename from imgs/icons/76_09.png rename to imgs/icons/76_9.png diff --git a/imgs/icons/79_09.png b/imgs/icons/79_9.png similarity index 100% rename from imgs/icons/79_09.png rename to imgs/icons/79_9.png diff --git a/imgs/icons/07_12.png b/imgs/icons/7_12.png similarity index 100% rename from imgs/icons/07_12.png rename to imgs/icons/7_12.png diff --git a/imgs/icons/07_15.png b/imgs/icons/7_15.png similarity index 100% rename from imgs/icons/07_15.png rename to imgs/icons/7_15.png diff --git a/imgs/icons/08_01.png b/imgs/icons/8_1.png similarity index 100% rename from imgs/icons/08_01.png rename to imgs/icons/8_1.png diff --git a/imgs/icons/08_10.png b/imgs/icons/8_10.png similarity index 100% rename from imgs/icons/08_10.png rename to imgs/icons/8_10.png diff --git a/imgs/icons/08_11.png b/imgs/icons/8_11.png similarity index 100% rename from imgs/icons/08_11.png rename to imgs/icons/8_11.png diff --git a/imgs/icons/08_12.png b/imgs/icons/8_12.png similarity index 100% rename from imgs/icons/08_12.png rename to imgs/icons/8_12.png diff --git a/imgs/icons/08_16.png b/imgs/icons/8_16.png similarity index 100% rename from imgs/icons/08_16.png rename to imgs/icons/8_16.png diff --git a/imgs/icons/08_02.png b/imgs/icons/8_2.png similarity index 100% rename from imgs/icons/08_02.png rename to imgs/icons/8_2.png diff --git a/imgs/icons/08_03.png b/imgs/icons/8_3.png similarity index 100% rename from imgs/icons/08_03.png rename to imgs/icons/8_3.png diff --git a/imgs/icons/08_04.png b/imgs/icons/8_4.png similarity index 100% rename from imgs/icons/08_04.png rename to imgs/icons/8_4.png diff --git a/imgs/icons/08_05.png b/imgs/icons/8_5.png similarity index 100% rename from imgs/icons/08_05.png rename to imgs/icons/8_5.png diff --git a/imgs/icons/08_06.png b/imgs/icons/8_6.png similarity index 100% rename from imgs/icons/08_06.png rename to imgs/icons/8_6.png diff --git a/imgs/icons/08_07.png b/imgs/icons/8_7.png similarity index 100% rename from imgs/icons/08_07.png rename to imgs/icons/8_7.png diff --git a/imgs/icons/08_08.png b/imgs/icons/8_8.png similarity index 100% rename from imgs/icons/08_08.png rename to imgs/icons/8_8.png diff --git a/imgs/icons/08_09.png b/imgs/icons/8_9.png similarity index 100% rename from imgs/icons/08_09.png rename to imgs/icons/8_9.png diff --git a/imgs/icons/95_05.png b/imgs/icons/95_5.png similarity index 100% rename from imgs/icons/95_05.png rename to imgs/icons/95_5.png diff --git a/imgs/icons/99_09.png b/imgs/icons/99_9.png similarity index 100% rename from imgs/icons/99_09.png rename to imgs/icons/99_9.png diff --git a/imgs/icons/09_16.png b/imgs/icons/9_16.png similarity index 100% rename from imgs/icons/09_16.png rename to imgs/icons/9_16.png diff --git a/imgs/icons/09_05.png b/imgs/icons/9_5.png similarity index 100% rename from imgs/icons/09_05.png rename to imgs/icons/9_5.png diff --git a/imgs/icons/multiuseanalyzer_64.png b/imgs/icons/multiuseanalyzer_64.png new file mode 100644 index 000000000..23fb02c27 Binary files /dev/null and b/imgs/icons/multiuseanalyzer_64.png differ diff --git a/scripts/icons_update.py b/scripts/icons_update.py index f8cd1602c..a88ad4283 100644 --- a/scripts/icons_update.py +++ b/scripts/icons_update.py @@ -127,13 +127,14 @@ def unzero(fname): except (TypeError, ValueError): pass if size is None: - fname = '{}_{}{}'.format(prefix, suffix, tail) + fname = '{}_{}'.format(prefix, suffix) else: - fname = '{}_{}_{}{}'.format(prefix, size, suffix, tail) + fname = '{}_{}_{}'.format(prefix, size, suffix) return fname else: return fname +# Get a list of needed icons based on the items / attributes / etc from the database for query in (query_items, query_groups, query_cats, query_market, query_attrib): for row in cursor.execute(query): fname = row[0] @@ -142,6 +143,7 @@ for query in (query_items, query_groups, query_cats, query_market, query_attrib) fname = strip_path(fname) needed.add(fname) +# Get a list of all the icons we currently have for fname in os.listdir(icons_dir): if not os.path.isfile(os.path.join(icons_dir, fname)): continue @@ -151,6 +153,7 @@ for fname in os.listdir(icons_dir): print fname,"exists" existing.add(fname) +# Get a list of all the icons currently available for dir in dirs: for fname in os.listdir(dir): if not os.path.isfile(os.path.join(dir, fname)): @@ -163,8 +166,6 @@ for dir in dirs: # Often items referred to with 01_01 format, fnames = export.setdefault(stripped.lower(), set()) fnames.add(fname) - fnames = export.setdefault(sizeless.lower(), set()) - fnames.add(fname) def crop_image(img): w, h = img.size diff --git a/scripts/sdeReadIcons.py b/scripts/sdeReadIcons.py new file mode 100644 index 000000000..2284bf7e9 --- /dev/null +++ b/scripts/sdeReadIcons.py @@ -0,0 +1,22 @@ +''' +A change to EVE Online's cache format rendered Reverence unable to correctly dump the icons file. As a stop gap, this +reads the offical SDE iconIDs.yaml and populates our own icons.json file. This files should then be transferred to the +other JSON files Phobos dumps before being converted to SQL +''' + +import yaml +import json + +iconDict = {} + +stream = open(r"C:\path\to\sde\fsd\iconIDs.yaml", "r") +docs = yaml.load_all(stream) + +for doc in docs: + for k,v in doc.items(): + iconDict[str(k)] = {"iconFile": v['iconFile']} + +with open('icons.json', 'w') as outfile: + json.dump(iconDict, outfile) + +print "done" \ No newline at end of file diff --git a/service/crudeTests.py b/service/crudeTests.py new file mode 100644 index 000000000..e69de29bb