diff --git a/config.py b/config.py index 81bdb0238..0a9c1a799 100644 --- a/config.py +++ b/config.py @@ -18,10 +18,10 @@ debug = False saveInRoot = False # Version data -version = "1.25.2" +version = "1.26.1" tag = "git" -expansionName = "Ascension" -expansionVersion = "1.9" +expansionName = "YC118.10" +expansionVersion = "1.2" evemonMinVersion = "4081" pyfaPath = None diff --git a/eos/db/saveddata/__init__.py b/eos/db/saveddata/__init__.py index d409e8ca7..7dbf2a45d 100644 --- a/eos/db/saveddata/__init__.py +++ b/eos/db/saveddata/__init__.py @@ -8,7 +8,6 @@ __all__ = [ "booster", "drone", "implant", - "fleet", "damagePattern", "miscData", "targetResists", diff --git a/eos/db/saveddata/databaseRepair.py b/eos/db/saveddata/databaseRepair.py new file mode 100644 index 000000000..ede0f2fde --- /dev/null +++ b/eos/db/saveddata/databaseRepair.py @@ -0,0 +1,104 @@ +# =============================================================================== +# Copyright (C) 2010 Diego Duclos +# +# This file is part of pyfa. +# +# pyfa is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# pyfa is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with pyfa. If not, see . +# =============================================================================== + +import sqlalchemy +import logging + +logger = logging.getLogger(__name__) + + +class DatabaseCleanup: + def __init__(self): + pass + + @staticmethod + def OrphanedCharacterSkills(saveddata_engine): + # Finds and fixes database corruption issues. + logger.debug("Start databsae validation and cleanup.") + + # Find orphaned character skills. + # This solves an issue where the character doesn't exist, but skills for that character do. + # See issue #917 + try: + logger.debug("Running database cleanup for character skills.") + results = saveddata_engine.execute("SELECT COUNT(*) AS num FROM characterSkills " + "WHERE characterID NOT IN (SELECT ID from characters)") + row = results.first() + + if row and row['num']: + delete = saveddata_engine.execute("DELETE FROM characterSkills WHERE characterID NOT IN (SELECT ID from characters)") + logger.error("Database corruption found. Cleaning up %d records.", delete.rowcount) + + except sqlalchemy.exc.DatabaseError: + logger.error("Failed to connect to database.") + + @staticmethod + def OrphanedFitDamagePatterns(saveddata_engine): + # Find orphaned damage patterns. + # This solves an issue where the damage pattern doesn't exist, but fits reference the pattern. + # See issue #777 + try: + logger.debug("Running database cleanup for orphaned damage patterns attached to fits.") + + results = saveddata_engine.execute("SELECT COUNT(*) AS num FROM fits WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL") + row = results.first() + + if row and row['num']: + # Get Uniform damage pattern ID + query = saveddata_engine.execute("SELECT ID FROM damagePatterns WHERE name = 'Uniform'") + rows = query.fetchall() + + if len(rows) == 0: + logger.error("Missing uniform damage pattern.") + elif len(rows) > 1: + logger.error("More than one uniform damage pattern found.") + else: + uniform_damage_pattern_id = rows[0]['ID'] + update = saveddata_engine.execute("UPDATE 'fits' SET 'damagePatternID' = ? " + "WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL", + uniform_damage_pattern_id) + logger.error("Database corruption found. Cleaning up %d records.", update.rowcount) + except sqlalchemy.exc.DatabaseError: + logger.error("Failed to connect to database.") + + @staticmethod + def OrphanedFitCharacterIDs(saveddata_engine): + # Find orphaned character IDs. This solves an issue where the character doesn't exist, but fits reference the pattern. + try: + logger.debug("Running database cleanup for orphaned characters attached to fits.") + results = saveddata_engine.execute("SELECT COUNT(*) AS num FROM fits WHERE characterID NOT IN (SELECT ID FROM characters) OR characterID IS NULL") + row = results.first() + + if row['num']: + # Get All 5 character ID + query = saveddata_engine.execute("SELECT ID FROM characters WHERE name = 'All 5'") + rows = query.fetchall() + + if len(rows) == 0: + logger.error("Missing 'All 5' character.") + elif len(rows) > 1: + logger.error("More than one 'All 5' character found.") + else: + all5_id = rows[0]['ID'] + update = saveddata_engine.execute("UPDATE 'fits' SET 'characterID' = ? " + "WHERE characterID not in (select ID from characters) OR characterID IS NULL", + all5_id) + logger.error("Database corruption found. Cleaning up %d records.", update.rowcount) + except sqlalchemy.exc.DatabaseError: + logger.error("Failed to connect to database.") diff --git a/eos/db/saveddata/fleet.py b/eos/db/saveddata/fleet.py deleted file mode 100644 index eb644b02e..000000000 --- a/eos/db/saveddata/fleet.py +++ /dev/null @@ -1,65 +0,0 @@ -# =============================================================================== -# Copyright (C) 2010 Diego Duclos -# -# This file is part of eos. -# -# eos is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# eos is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with eos. If not, see . -# =============================================================================== - -from sqlalchemy import Table, Column, Integer, ForeignKey, String -from sqlalchemy.orm import mapper, relation - -from eos.db import saveddata_meta -from eos.db.saveddata.fit import fits_table -from eos.types import Fleet, Wing, Squad, Fit - -gangs_table = Table("gangs", saveddata_meta, - Column("ID", Integer, primary_key=True), - Column("leaderID", ForeignKey("fits.ID")), - Column("boosterID", ForeignKey("fits.ID")), - Column("name", String)) - -wings_table = Table("wings", saveddata_meta, - Column("ID", Integer, primary_key=True), - Column("gangID", ForeignKey("gangs.ID")), - Column("boosterID", ForeignKey("fits.ID")), - Column("leaderID", ForeignKey("fits.ID"))) - -squads_table = Table("squads", saveddata_meta, - Column("ID", Integer, primary_key=True), - Column("wingID", ForeignKey("wings.ID")), - Column("leaderID", ForeignKey("fits.ID")), - Column("boosterID", ForeignKey("fits.ID"))) - -squadmembers_table = Table("squadmembers", saveddata_meta, - Column("squadID", ForeignKey("squads.ID"), primary_key=True), - Column("memberID", ForeignKey("fits.ID"), primary_key=True)) - -mapper(Fleet, gangs_table, - properties={"wings": relation(Wing, backref="gang"), - "leader": relation(Fit, primaryjoin=gangs_table.c.leaderID == fits_table.c.ID), - "booster": relation(Fit, primaryjoin=gangs_table.c.boosterID == fits_table.c.ID)}) - -mapper(Wing, wings_table, - properties={"squads": relation(Squad, backref="wing"), - "leader": relation(Fit, primaryjoin=wings_table.c.leaderID == fits_table.c.ID), - "booster": relation(Fit, primaryjoin=wings_table.c.boosterID == fits_table.c.ID)}) - -mapper(Squad, squads_table, - properties={"leader": relation(Fit, primaryjoin=squads_table.c.leaderID == fits_table.c.ID), - "booster": relation(Fit, primaryjoin=squads_table.c.boosterID == fits_table.c.ID), - "members": relation(Fit, - primaryjoin=squads_table.c.ID == squadmembers_table.c.squadID, - secondaryjoin=squadmembers_table.c.memberID == fits_table.c.ID, - secondary=squadmembers_table)}) diff --git a/eos/db/saveddata/queries.py b/eos/db/saveddata/queries.py index bcecb3b69..8c0d1c2b6 100644 --- a/eos/db/saveddata/queries.py +++ b/eos/db/saveddata/queries.py @@ -17,14 +17,12 @@ # along with eos. If not, see . # =============================================================================== -from sqlalchemy.sql import and_ - -from eos.db import saveddata_session, sd_lock -from eos.db.saveddata.fit import projectedFits_table -from eos.db.saveddata.fleet import squadmembers_table from eos.db.util import processEager, processWhere -from eos.types import * +from eos.db import saveddata_session, sd_lock +from eos.types import * +from eos.db.saveddata.fit import projectedFits_table +from sqlalchemy.sql import and_ import eos.config configVal = getattr(eos.config, "saveddataCache", None) @@ -212,52 +210,6 @@ def getFit(lookfor, eager=None): return fit - -@cachedQuery(Fleet, 1, "fleetID") -def getFleet(fleetID, eager=None): - if isinstance(fleetID, int): - if eager is None: - with sd_lock: - fleet = saveddata_session.query(Fleet).get(fleetID) - else: - eager = processEager(eager) - with sd_lock: - fleet = saveddata_session.query(Fleet).options(*eager).filter(Fleet.ID == fleetID).first() - else: - raise TypeError("Need integer as argument") - return fleet - - -@cachedQuery(Wing, 1, "wingID") -def getWing(wingID, eager=None): - if isinstance(wingID, int): - if eager is None: - with sd_lock: - wing = saveddata_session.query(Wing).get(wingID) - else: - eager = processEager(eager) - with sd_lock: - wing = saveddata_session.query(Wing).options(*eager).filter(Wing.ID == wingID).first() - else: - raise TypeError("Need integer as argument") - return wing - - -@cachedQuery(Squad, 1, "squadID") -def getSquad(squadID, eager=None): - if isinstance(squadID, int): - if eager is None: - with sd_lock: - squad = saveddata_session.query(Squad).get(squadID) - else: - eager = processEager(eager) - with sd_lock: - squad = saveddata_session.query(Squad).options(*eager).filter(Fleet.ID == squadID).first() - else: - raise TypeError("Need integer as argument") - return squad - - def getFitsWithShip(shipID, ownerID=None, where=None, eager=None): """ Get all the fits using a certain ship. @@ -306,24 +258,31 @@ def countAllFits(): return count -def countFitsWithShip(shipID, ownerID=None, where=None, eager=None): +def countFitsWithShip(lookfor, ownerID=None, where=None, eager=None): """ Get all the fits using a certain ship. If no user is passed, do this for all users. """ - if isinstance(shipID, int): - if ownerID is not None and not isinstance(ownerID, int): - raise TypeError("OwnerID must be integer") - filter = Fit.shipID == shipID - if ownerID is not None: - filter = and_(filter, Fit.ownerID == ownerID) + if ownerID is not None and not isinstance(ownerID, int): + raise TypeError("OwnerID must be integer") - filter = processWhere(filter, where) - eager = processEager(eager) - with sd_lock: - count = saveddata_session.query(Fit).options(*eager).filter(filter).count() + if isinstance(lookfor, int): + filter = Fit.shipID == lookfor + elif isinstance(lookfor, list): + if len(lookfor) == 0: + return 0 + filter = Fit.shipID.in_(lookfor) else: - raise TypeError("ShipID must be integer") + raise TypeError("You must supply either an integer or ShipID must be integer") + + if ownerID is not None: + filter = and_(filter, Fit.ownerID == ownerID) + + filter = processWhere(filter, where) + eager = processEager(eager) + with sd_lock: + count = saveddata_session.query(Fit).options(*eager).filter(filter).count() + return count @@ -334,14 +293,6 @@ def getFitList(eager=None): return fits - -def getFleetList(eager=None): - eager = processEager(eager) - with sd_lock: - fleets = saveddata_session.query(Fleet).options(*eager).all() - return fleets - - @cachedQuery(Price, 1, "typeID") def getPrice(typeID): if isinstance(typeID, int): @@ -465,18 +416,6 @@ def searchFits(nameLike, where=None, eager=None): return fits - -def getSquadsIDsWithFitID(fitID): - if isinstance(fitID, int): - with sd_lock: - squads = saveddata_session.query(squadmembers_table.c.squadID).filter( - squadmembers_table.c.memberID == fitID).all() - squads = tuple(entry[0] for entry in squads) - return squads - else: - raise TypeError("Need integer as argument") - - def getProjectedFits(fitID): if isinstance(fitID, int): with sd_lock: diff --git a/eos/effectHandlerHelpers.py b/eos/effectHandlerHelpers.py index 2e42ef69f..300e0b4cc 100644 --- a/eos/effectHandlerHelpers.py +++ b/eos/effectHandlerHelpers.py @@ -172,10 +172,11 @@ class HandledModuleList(HandledList): self[index] = mod def freeSlot(self, slot): - for i in range(len(self) - 1, -1, -1): + for i in range(len(self)): mod = self[i] if mod.getModifiedItemAttr("subSystemSlot") == slot: - del self[i] + self.toDummy(i) + break class HandledDroneCargoList(HandledList): diff --git a/eos/effects/ammospeedmultiplier.py b/eos/effects/ammospeedmultiplier.py index 140baef43..14f4298f5 100644 --- a/eos/effects/ammospeedmultiplier.py +++ b/eos/effects/ammospeedmultiplier.py @@ -1,7 +1,7 @@ # ammoSpeedMultiplier # # Used by: -# Charges from group: Festival Charges (8 of 8) +# Charges from group: Festival Charges (9 of 9) # Charges from group: Interdiction Probe (2 of 2) # Charges from group: Survey Probe (3 of 3) type = "passive" diff --git a/eos/effects/boosterarmorhppenalty.py b/eos/effects/boosterarmorhppenalty.py index eac33eaf4..c2db78c40 100644 --- a/eos/effects/boosterarmorhppenalty.py +++ b/eos/effects/boosterarmorhppenalty.py @@ -1,7 +1,7 @@ # boosterArmorHpPenalty # # Used by: -# Implants from group: Booster (12 of 47) +# Implants from group: Booster (12 of 48) type = "boosterSideEffect" activeByDefault = False diff --git a/eos/effects/boostermaxvelocitypenalty.py b/eos/effects/boostermaxvelocitypenalty.py index 7588be3f7..0bc951e9e 100644 --- a/eos/effects/boostermaxvelocitypenalty.py +++ b/eos/effects/boostermaxvelocitypenalty.py @@ -1,7 +1,7 @@ # boosterMaxVelocityPenalty # # Used by: -# Implants from group: Booster (12 of 47) +# Implants from group: Booster (12 of 48) type = "boosterSideEffect" activeByDefault = False diff --git a/eos/effects/boostershieldcapacitypenalty.py b/eos/effects/boostershieldcapacitypenalty.py index b7d5f0554..b2c5ed801 100644 --- a/eos/effects/boostershieldcapacitypenalty.py +++ b/eos/effects/boostershieldcapacitypenalty.py @@ -1,7 +1,7 @@ # boosterShieldCapacityPenalty # # Used by: -# Implants from group: Booster (12 of 47) +# Implants from group: Booster (12 of 48) type = "boosterSideEffect" activeByDefault = False diff --git a/eos/effects/chargebonuswarfarecharge.py b/eos/effects/chargebonuswarfarecharge.py index 005101d45..6b3c5f3f2 100644 --- a/eos/effects/chargebonuswarfarecharge.py +++ b/eos/effects/chargebonuswarfarecharge.py @@ -2,111 +2,9 @@ # # Used by: # Items from market group: Ammunition & Charges > Command Burst Charges (15 of 15) +type = "active" - -''' -Some documentation: -When the fit is calculated, we gather up all the gang effects and stick them onto the fit. We don't run the actual -effect yet, only give the fit details so that it can run the effect at a later time. We need to do this so that we can -only run the strongest effect. When we are done, one of the last things that we do with the fit is to loop through those -bonuses and actually run the effect. To do this, we have a special argument passed into the effect handler that tells it -which warfareBuffID to run (shouldn't need this right now, but better safe than sorry) -''' - -type = "active", "gang" -def handler(fit, module, context, **kwargs): - print "In chargeBonusWarfareEffect, context: ", context - - def runEffect(id, value): - print "RUN EFFECT: ", fit, - - if id == 10: # Shield Burst: Shield Harmonizing: Shield Resistance - for damageType in ("Em", "Explosive", "Thermal", "Kinetic"): - fit.ship.boostItemAttr("shield%sDamageResonance" % damageType, value) - - if id == 11: # Shield Burst: Active Shielding: Repair Duration/Capacitor - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill("Shield Emission Systems"), "capacitorNeed", value) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill("Shield Emission Systems"), "duration", value) - - if id == 12: # Shield Burst: Shield Extension: Shield HP - fit.ship.boostItemAttr("shieldCapacity", value, stackingPenalties=True) - - if id == 13: # Armor Burst: Armor Energizing: Armor Resistance - for damageType in ("Em", "Thermal", "Explosive", "Kinetic"): - fit.ship.boostItemAttr("armor%sDamageResonance" % damageType, value) - - if id == 14: # Armor Burst: Rapid Repair: Repair Duration/Capacitor - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), "capacitorNeed", value) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), "duration", value) - - if id == 15: # Armor Burst: Armor Reinforcement: Armor HP - fit.ship.boostItemAttr("armorHP", value, stackingPenalties=True) - - if id == 16: # Information Burst: Sensor Optimization: Scan Resolution - fit.ship.boostItemAttr("scanResolution", value, stackingPenalties=True) - - if id == 17: # Information Burst: Electronic Superiority: EWAR Range and Strength - groups = ("ECM", "Sensor Dampener", "Weapon Disruptor", "Target Painter") - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, stackingPenalties=True) - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "falloffEffectiveness", value, stackingPenalties=True) - - for scanType in ("Magnetometric", "Radar", "Ladar", "Gravimetric"): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.nam == "ECM", "scan%sStrengthBonus" % scanType, value, stackingPenalties=True) - - for attr in ("missileVelocityBonus", "explosionDelayBonus", "aoeVelocityBonus", "falloffBonus", - "maxRangeBonus", "aoeCloudSizeBonus", "trackingSpeedBonus"): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor", attr, value) - - for attr in ("maxTargetRangeBonus", "scanResolutionBonus"): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Sensor Dampener", attr, value) - - fit.modules.filteredItemBoost(lambda mod: mod.item.gorup.name == "Target Painter", "signatureRadiusBonus", value, stackingPenalties=True) - - if id == 18: # Information Burst: Electronic Hardening: Scan Strength - for scanType in ("Gravimetric", "Radar", "Ladar", "Magnetometric"): - fit.ship.boostItemAttr("scan%sStrength" % scanType, value, stackingPenalties=True) - - if id == 19: # Information Burst: Electronic Hardening: RSD/RWD Resistance - fit.ship.boostItemAttr("sensorDampenerResistance", value) - fit.ship.boostItemAttr("weaponDisruptionResistance", value) - - if id == 26: # Information Burst: Sensor Optimization: Targeting Range - fit.ship.boostItemAttr("maxTargetRange", value) - - if id == 20: # Skirmish Burst: Evasive Maneuvers: Signature Radius - fit.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) - - if id == 21: # Skirmish Burst: Interdiction Maneuvers: Tackle Range - groups = ("Stasis Web", "Warp Scrambler") - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, stackingPenalties=True) - - if id == 22: # Skirmish Burst: Rapid Deployment: AB/MWD Speed Increase - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Afterburner") or mod.item.requiresSkill("High Speed Maneuvering"), "speedFactor", value, stackingPenalties=True) - - if id == 23: # Mining Burst: Mining Laser Field Enhancement: Mining/Survey Range - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "maxRange", value, stackingPenalties=True) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("CPU Management"), "surveyScanRange", value, stackingPenalties=True) - - if id == 24: # Mining Burst: Mining Laser Optimization: Mining Capacitor/Duration - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "capacitorNeed", value, stackingPenalties=True) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "duration", value, stackingPenalties = True) - - if id == 25: # Mining Burst: Mining Equipment Preservation: Crystal Volatility - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"), "crystalVolatilityChance", value, stackingPenalties=True) - - if id == 60: # Skirmish Burst: Evasive Maneuvers: Agility - fit.ship.boostItemAttr("agility", value, stackingPenalties=True) - +def handler(fit, module, context): for x in xrange(1, 4): - if module.getModifiedChargeAttr("warfareBuff{}ID".format(x)): - value = module.getModifiedChargeAttr("warfareBuff{}Multiplier".format(x)) - id = module.getModifiedChargeAttr("warfareBuff{}ID".format(x)) - print "Buff ID: ",id," value: ",value - if id: - if 'commandRun' not in context: - print "Add buffID", id, " to ", fit - fit.addCommandBonus(id, value, module, kwargs['effect']) - elif kwargs['warfareBuffID'] is not None and kwargs['warfareBuffID'] == id: - print "Running buffID ", kwargs['warfareBuffID'], " on ", fit - runEffect(kwargs['warfareBuffID'], value) - + value = module.getModifiedChargeAttr("warfareBuff{}Multiplier".format(x)) + module.multiplyItemAttr("warfareBuff{}Value".format(x), value) \ No newline at end of file diff --git a/eos/effects/covertopsandreconopscloakmoduledelaybonus.py b/eos/effects/covertopsandreconopscloakmoduledelaybonus.py index 297fe700d..0a3e341c3 100644 --- a/eos/effects/covertopsandreconopscloakmoduledelaybonus.py +++ b/eos/effects/covertopsandreconopscloakmoduledelaybonus.py @@ -10,6 +10,7 @@ # Ships named like: Stratios (2 of 2) # Subsystems named like: Offensive Covert Reconfiguration (4 of 4) # Ship: Astero +# Ship: Rabisu type = "passive" diff --git a/eos/effects/elitebonuslogisticremotearmorrepairoptimalfalloff1.py b/eos/effects/elitebonuslogisticremotearmorrepairoptimalfalloff1.py index d9180ebd7..f95cfd6f6 100644 --- a/eos/effects/elitebonuslogisticremotearmorrepairoptimalfalloff1.py +++ b/eos/effects/elitebonuslogisticremotearmorrepairoptimalfalloff1.py @@ -4,5 +4,5 @@ # Ship: Rabisu type = "passive" def handler(fit, src, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "falloffEffectiveness", src.getModifiedItemAttr("eliteBonusLogistics1"), stackingPenalties=True, skill="Logistics Cruisers") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "maxRange", src.getModifiedItemAttr("eliteBonusLogistics1"), stackingPenalties=True, skill="Logistics Cruisers") + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "falloffEffectiveness", src.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics Cruisers") + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "maxRange", src.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics Cruisers") diff --git a/eos/effects/energyweapondamagemultiply.py b/eos/effects/energyweapondamagemultiply.py index e1574c7fe..c1abce625 100644 --- a/eos/effects/energyweapondamagemultiply.py +++ b/eos/effects/energyweapondamagemultiply.py @@ -1,7 +1,7 @@ # energyWeaponDamageMultiply # # Used by: -# Modules from group: Heat Sink (17 of 17) +# Modules from group: Heat Sink (18 of 18) # Modules named like: QA Multiship Module Players (4 of 4) # Module: QA Damage Module type = "passive" diff --git a/eos/effects/energyweaponspeedmultiply.py b/eos/effects/energyweaponspeedmultiply.py index 425fb1ee1..209787284 100644 --- a/eos/effects/energyweaponspeedmultiply.py +++ b/eos/effects/energyweaponspeedmultiply.py @@ -1,7 +1,7 @@ # energyWeaponSpeedMultiply # # Used by: -# Modules from group: Heat Sink (17 of 17) +# Modules from group: Heat Sink (18 of 18) type = "passive" diff --git a/eos/effects/hybridweapondamagemultiply.py b/eos/effects/hybridweapondamagemultiply.py index 76079b9a6..94f6149e3 100644 --- a/eos/effects/hybridweapondamagemultiply.py +++ b/eos/effects/hybridweapondamagemultiply.py @@ -1,7 +1,7 @@ # hybridWeaponDamageMultiply # # Used by: -# Modules from group: Magnetic Field Stabilizer (12 of 12) +# Modules from group: Magnetic Field Stabilizer (14 of 14) # Modules named like: QA Multiship Module Players (4 of 4) # Module: QA Damage Module type = "passive" diff --git a/eos/effects/hybridweaponspeedmultiply.py b/eos/effects/hybridweaponspeedmultiply.py index 2ed8c8d5f..ac601b221 100644 --- a/eos/effects/hybridweaponspeedmultiply.py +++ b/eos/effects/hybridweaponspeedmultiply.py @@ -1,7 +1,7 @@ # hybridWeaponSpeedMultiply # # Used by: -# Modules from group: Magnetic Field Stabilizer (12 of 12) +# Modules from group: Magnetic Field Stabilizer (14 of 14) type = "passive" diff --git a/eos/effects/miningforemanstrengthbonus.py b/eos/effects/miningforemanstrengthbonus.py index 004c3500d..ac280eb87 100644 --- a/eos/effects/miningforemanstrengthbonus.py +++ b/eos/effects/miningforemanstrengthbonus.py @@ -5,7 +5,7 @@ type = "passive" def handler(fit, src, context): lvl = src.level - fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff4Multiplier", src.getModifiedItemAttr("commandStrengthBonus") * lvl) - fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff3Multiplier", src.getModifiedItemAttr("commandStrengthBonus") * lvl) - fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff2Multiplier", src.getModifiedItemAttr("commandStrengthBonus") * lvl) - fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff1Multiplier", src.getModifiedItemAttr("commandStrengthBonus") * lvl) \ No newline at end of file + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff4Value", src.getModifiedItemAttr("commandStrengthBonus") * lvl) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff3Value", src.getModifiedItemAttr("commandStrengthBonus") * lvl) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff2Value", src.getModifiedItemAttr("commandStrengthBonus") * lvl) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Foreman"), "warfareBuff1Value", src.getModifiedItemAttr("commandStrengthBonus") * lvl) \ No newline at end of file diff --git a/eos/effects/modulebonusfightersupportunit.py b/eos/effects/modulebonusfightersupportunit.py index 64906e62a..93a4c22f4 100644 --- a/eos/effects/modulebonusfightersupportunit.py +++ b/eos/effects/modulebonusfightersupportunit.py @@ -6,16 +6,16 @@ type = "passive" def handler(fit, src, context): - fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "shieldCapacity", + fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Fighters"), "shieldCapacity", src.getModifiedItemAttr("fighterBonusShieldCapacityPercent")) - fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "maxVelocity", + fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Fighters"), "maxVelocity", src.getModifiedItemAttr("fighterBonusVelocityPercent"), stackingPenalties=True) - fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), + fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityAttackMissileDuration", src.getModifiedItemAttr("fighterBonusROFPercent"), stackingPenalties=True) - fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityAttackTurretDuration", + fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityAttackTurretDuration", src.getModifiedItemAttr("fighterBonusROFPercent"), stackingPenalties=True) - fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityMissilesDuration", + fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityMissilesDuration", src.getModifiedItemAttr("fighterBonusROFPercent"), stackingPenalties=True) - fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "shieldRechargeRate", + fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Fighters"), "shieldRechargeRate", src.getModifiedItemAttr("fighterBonusShieldRechargePercent")) diff --git a/eos/effects/modulebonuswarfarelinkarmor.py b/eos/effects/modulebonuswarfarelinkarmor.py index 87bde1d62..f39ae8a1b 100644 --- a/eos/effects/modulebonuswarfarelinkarmor.py +++ b/eos/effects/modulebonuswarfarelinkarmor.py @@ -2,10 +2,24 @@ # # Used by: # Variations of module: Armor Command Burst I (2 of 2) -type = "active" -runTime = "early" -def handler(fit, module, context): - for x in xrange(1, 4): - value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) - module.multiplyChargeAttr("warfareBuff{}Multiplier".format(x), value) +''' +Some documentation: +When the fit is calculated, we gather up all the gang effects and stick them onto the fit. We don't run the actual +effect yet, only give the fit details so that it can run the effect at a later time. We need to do this so that we can +only run the strongest effect. When we are done, one of the last things that we do with the fit is to loop through those +bonuses and actually run the effect. To do this, we have a special argument passed into the effect handler that tells it +which warfareBuffID to run (shouldn't need this right now, but better safe than sorry) +''' + +type = "active", "gang" +def handler(fit, module, context, **kwargs): + for x in xrange(1, 5): + if module.getModifiedChargeAttr("warfareBuff{}ID".format(x)): + value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) + id = module.getModifiedChargeAttr("warfareBuff{}ID".format(x)) + + if id: + fit.addCommandBonus(id, value, module, kwargs['effect']) + + diff --git a/eos/effects/modulebonuswarfarelinkinfo.py b/eos/effects/modulebonuswarfarelinkinfo.py index 9bfa9a6ca..2951cc9db 100644 --- a/eos/effects/modulebonuswarfarelinkinfo.py +++ b/eos/effects/modulebonuswarfarelinkinfo.py @@ -2,10 +2,13 @@ # # Used by: # Variations of module: Information Command Burst I (2 of 2) -type = "active" -runTime = "early" -def handler(fit, module, context): - for x in xrange(1, 4): - value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) - module.multiplyChargeAttr("warfareBuff{}Multiplier".format(x), value) +type = "active", "gang" +def handler(fit, module, context, **kwargs): + for x in xrange(1, 5): + if module.getModifiedChargeAttr("warfareBuff{}ID".format(x)): + value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) + id = module.getModifiedChargeAttr("warfareBuff{}ID".format(x)) + + if id: + fit.addCommandBonus(id, value, module, kwargs['effect']) \ No newline at end of file diff --git a/eos/effects/modulebonuswarfarelinkmining.py b/eos/effects/modulebonuswarfarelinkmining.py index 9b58290d2..494495873 100644 --- a/eos/effects/modulebonuswarfarelinkmining.py +++ b/eos/effects/modulebonuswarfarelinkmining.py @@ -2,10 +2,13 @@ # # Used by: # Variations of module: Mining Foreman Burst I (2 of 2) -type = "active" -runTime = "late" -def handler(fit, module, context): - for x in xrange(1, 4): - value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) - module.multiplyChargeAttr("warfareBuff{}Multiplier".format(x), value) +type = "active", "gang" +def handler(fit, module, context, **kwargs): + for x in xrange(1, 5): + if module.getModifiedChargeAttr("warfareBuff{}ID".format(x)): + value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) + id = module.getModifiedChargeAttr("warfareBuff{}ID".format(x)) + + if id: + fit.addCommandBonus(id, value, module, kwargs['effect']) \ No newline at end of file diff --git a/eos/effects/modulebonuswarfarelinkshield.py b/eos/effects/modulebonuswarfarelinkshield.py index 7bf5e5894..08b19b3a3 100644 --- a/eos/effects/modulebonuswarfarelinkshield.py +++ b/eos/effects/modulebonuswarfarelinkshield.py @@ -2,10 +2,13 @@ # # Used by: # Variations of module: Shield Command Burst I (2 of 2) -type = "active" -runTime = "early" -def handler(fit, module, context): - for x in xrange(1, 4): - value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) - module.multiplyChargeAttr("warfareBuff{}Multiplier".format(x), value) +type = "active", "gang" +def handler(fit, module, context, **kwargs): + for x in xrange(1, 5): + if module.getModifiedChargeAttr("warfareBuff{}ID".format(x)): + value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) + id = module.getModifiedChargeAttr("warfareBuff{}ID".format(x)) + + if id: + fit.addCommandBonus(id, value, module, kwargs['effect']) \ No newline at end of file diff --git a/eos/effects/modulebonuswarfarelinkskirmish.py b/eos/effects/modulebonuswarfarelinkskirmish.py index ca339df02..53f1d0a06 100644 --- a/eos/effects/modulebonuswarfarelinkskirmish.py +++ b/eos/effects/modulebonuswarfarelinkskirmish.py @@ -2,10 +2,13 @@ # # Used by: # Variations of module: Skirmish Command Burst I (2 of 2) -type = "active" -runTime = "early" -def handler(fit, module, context): - for x in xrange(1, 4): - value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) - module.multiplyChargeAttr("warfareBuff{}Multiplier".format(x), value) +type = "active", "gang" +def handler(fit, module, context, **kwargs): + for x in xrange(1, 5): + if module.getModifiedChargeAttr("warfareBuff{}ID".format(x)): + value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) + id = module.getModifiedChargeAttr("warfareBuff{}ID".format(x)) + + if id: + fit.addCommandBonus(id, value, module, kwargs['effect']) \ No newline at end of file diff --git a/eos/effects/moduletitaneffectgenerator.py b/eos/effects/moduletitaneffectgenerator.py index 2a5de4473..64e21857a 100644 --- a/eos/effects/moduletitaneffectgenerator.py +++ b/eos/effects/moduletitaneffectgenerator.py @@ -2,74 +2,16 @@ # # Used by: # Modules from group: Titan Phenomena Generator (4 of 4) - type = "active", "gang" def handler(fit, module, context, **kwargs): - def runEffect(id, value): - if id == 39: # Avatar Effect Generator : Capacitor Recharge bonus - fit.ship.boostItemAttr("rechargeRate", value, stackingPenalties=True) - - if id == 40: # Avatar Effect Generator : Kinetic resistance bonus - for attr in ("armorKineticDamageResonance", "shieldKineticDamageResonance", "hullKineticDamageResonance"): - fit.ship.boostItemAttr(attr, value, stackingPenalties=True) - - if id == 41: # Erebus Effect Generator : Armor HP bonus - fit.ship.boostItemAttr("armorHP", value, stackingPenalties=True) - - if id == 42: # Leviathan Effect Generator : Shield HP bonus - fit.ship.boostItemAttr("shieldCapacity", value, stackingPenalties=True) - - if id == 43: # Erebus Effect Generator : Explosive resistance bonus - for attr in ("armorExplosiveDamageResonance", "shieldExplosiveDamageResonance", "hullExplosiveDamageResonance"): - fit.ship.boostItemAttr(attr, value, stackingPenalties=True) - - if id == 44: # Erebus Effect Generator : Thermal resistance penalty - for attr in ("armorThermalDamageResonance", "shieldThermalDamageResonance", "hullThermalDamageResonance"): - fit.ship.boostItemAttr(attr, value, stackingPenalties=True) - - if id == 45: # Ragnarok Effect Generator : Signature Radius bonus - fit.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) - - if id == 46: # Ragnarok Effect Generator : Thermal resistance bonus - for attr in ("armorThermalDamageResonance", "shieldThermalDamageResonance", "hullThermalDamageResonance"): - fit.ship.boostItemAttr(attr, value, stackingPenalties=True) - - if id == 47: # Ragnarok Effect Generator : Explosive resistance penaly - for attr in ("armorExplosiveDamageResonance", "shieldExplosiveDamageResonance", "hullExplosiveDamageResonance"): - fit.ship.boostItemAttr(attr, value, stackingPenalties=True) - - if id == 48: # Leviathan Effect Generator : Shield HP bonus - fit.ship.boostItemAttr("shieldCapacity", value, stackingPenalties=True) - - if id == 49: # Leviathan Effect Generator : EM resistance bonus - for attr in ("armorEmDamageResonance", "shieldEmDamageResonance", "hullEmDamageResonance"): - fit.ship.boostItemAttr(attr, value, stackingPenalties=True) - - if id == 50: # Leviathan Effect Generator : Kinetic resistance penalty - for attr in ("armorKineticDamageResonance", "shieldKineticDamageResonance", "hullKineticDamageResonance"): - fit.ship.boostItemAttr(attr, value, stackingPenalties=True) - - if id == 51: # Avatar Effect Generator : Velocity penalty - fit.ship.boostItemAttr("maxVelocity", value, stackingPenalties=True) - - if id == 52: # Erebus Effect Generator : Shield RR penalty - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Emission Systems"), "shieldBonus", value, stackingPenalties=True) - - if id == 53: # Leviathan Effect Generator : Armor RR penalty - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "armorDamageAmount", value, stackingPenalties=True) - - if id == 54: # Ragnarok Effect Generator : Laser and Hybrid Optimal penalty - groups = ("Energy Weapon", "Hybrid Weapon") - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, stackingPenalties=True) - - for x in xrange(1, 4): - if module.getModifiedChargeAttr("warfareBuff{}ID".format(x)): - value = module.getModifiedChargeAttr("warfareBuff{}Multiplier".format(x)) - id = module.getModifiedChargeAttr("warfareBuff{}ID".format(x)) + for x in xrange(1, 5): + if module.getModifiedItemAttr("warfareBuff{}ID".format(x)): + value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) + id = module.getModifiedItemAttr("warfareBuff{}ID".format(x)) if id: - if 'commandRun' not in context: - fit.addCommandBonus(id, value, module, kwargs['effect']) - elif kwargs['warfareBuffID'] is not None and kwargs['warfareBuffID'] == id: - runEffect(kwargs['warfareBuffID'], value) + fit.addCommandBonus(id, value, module, kwargs['effect']) + + + diff --git a/eos/effects/overloadrofbonus.py b/eos/effects/overloadrofbonus.py index 5ca6ac11f..be8e2af22 100644 --- a/eos/effects/overloadrofbonus.py +++ b/eos/effects/overloadrofbonus.py @@ -2,7 +2,7 @@ # # Used by: # Modules from group: Missile Launcher Torpedo (22 of 22) -# Items from market group: Ship Equipment > Turrets & Bays (428 of 854) +# Items from market group: Ship Equipment > Turrets & Bays (428 of 859) # Module: Interdiction Sphere Launcher I type = "overheat" diff --git a/eos/effects/projectileweapondamagemultiply.py b/eos/effects/projectileweapondamagemultiply.py index bb6bbfda8..7037897d8 100644 --- a/eos/effects/projectileweapondamagemultiply.py +++ b/eos/effects/projectileweapondamagemultiply.py @@ -1,7 +1,7 @@ # projectileWeaponDamageMultiply # # Used by: -# Modules from group: Gyrostabilizer (12 of 12) +# Modules from group: Gyrostabilizer (13 of 13) # Modules named like: QA Multiship Module Players (4 of 4) # Module: QA Damage Module type = "passive" diff --git a/eos/effects/projectileweaponspeedmultiply.py b/eos/effects/projectileweaponspeedmultiply.py index 1a7ce802e..784712da1 100644 --- a/eos/effects/projectileweaponspeedmultiply.py +++ b/eos/effects/projectileweaponspeedmultiply.py @@ -1,7 +1,7 @@ # projectileWeaponSpeedMultiply # # Used by: -# Modules from group: Gyrostabilizer (12 of 12) +# Modules from group: Gyrostabilizer (13 of 13) type = "passive" diff --git a/eos/effects/rolebonusremotearmorrepairoptimalfalloff.py b/eos/effects/rolebonusremotearmorrepairoptimalfalloff.py index c28744a06..86acf05b0 100644 --- a/eos/effects/rolebonusremotearmorrepairoptimalfalloff.py +++ b/eos/effects/rolebonusremotearmorrepairoptimalfalloff.py @@ -4,5 +4,5 @@ # Ship: Rabisu type = "passive" def handler(fit, src, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "falloffEffectiveness", src.getModifiedItemAttr("roleBonusRepairRange"), stackingPenalties=True) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "maxRange", src.getModifiedItemAttr("roleBonusRepairRange"), stackingPenalties=True) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "falloffEffectiveness", src.getModifiedItemAttr("roleBonusRepairRange")) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "maxRange", src.getModifiedItemAttr("roleBonusRepairRange")) diff --git a/eos/effects/setbonusasklepian.py b/eos/effects/setbonusasklepian.py index 5d063f470..4bd989f13 100644 --- a/eos/effects/setbonusasklepian.py +++ b/eos/effects/setbonusasklepian.py @@ -1,8 +1,8 @@ # setBonusAsklepian # # Used by: +# Implants named like: Asklepian Omega (3 of 3) # Implants named like: Grade Asklepian (16 of 16) -# Implants named like: grade Asklepian Omega (2 of 2) runTime = "early" type = "passive" diff --git a/eos/effects/shipbonuscommanddestroyerrole1defenderbonus.py b/eos/effects/shipbonuscommanddestroyerrole1defenderbonus.py new file mode 100644 index 000000000..cd2c1e733 --- /dev/null +++ b/eos/effects/shipbonuscommanddestroyerrole1defenderbonus.py @@ -0,0 +1,10 @@ +# shipBonusCommandDestroyerRole1DefenderBonus +# +# Used by: +# Ships from group: Command Destroyer (4 of 4) +type = "passive" + + +def handler(fit, ship, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Defender Missiles"), + "moduleReactivationDelay", ship.getModifiedItemAttr("shipBonusRole1")) diff --git a/eos/effects/skillbonusdroneinterfacing.py b/eos/effects/skillbonusdroneinterfacing.py index 405435a71..4aec63e83 100644 --- a/eos/effects/skillbonusdroneinterfacing.py +++ b/eos/effects/skillbonusdroneinterfacing.py @@ -18,5 +18,5 @@ def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityMissilesDamageMultiplier", src.getModifiedItemAttr("damageMultiplierBonus") * lvl) - fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == "Mining Drone", "miningDroneAmountPercent", + fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Mining Drone Operation"), "miningDroneAmountPercent", src.getModifiedItemAttr("miningAmountBonus") * lvl) diff --git a/eos/effects/skillmultiplierdefendermissilevelocity.py b/eos/effects/skillmultiplierdefendermissilevelocity.py new file mode 100644 index 000000000..137e31f44 --- /dev/null +++ b/eos/effects/skillmultiplierdefendermissilevelocity.py @@ -0,0 +1,10 @@ +# skillMultiplierDefenderMissileVelocity +# +# Used by: +# Skill: Defender Missiles +type = "passive" + + +def handler(fit, skill, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Defender Missiles"), + "maxVelocity", skill.getModifiedItemAttr("missileVelocityBonus") * skill.level) diff --git a/eos/effects/skillremoteecmdurationbonus.py b/eos/effects/skillremoteecmdurationbonus.py index d2b13bdad..77c687f34 100644 --- a/eos/effects/skillremoteecmdurationbonus.py +++ b/eos/effects/skillremoteecmdurationbonus.py @@ -6,5 +6,28 @@ type = "passive" def handler(fit, skill, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Burst Projectors", - "duration", skill.getModifiedItemAttr("projECMDurationBonus") * skill.level) + # We need to make sure that the attribute exists, otherwise we add attributes that don't belong. See #927 + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Burst Projector Operation") and + mod.item.getAttribute("duration"), + "duration", + skill.getModifiedItemAttr("projECMDurationBonus") * skill.level) + + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Burst Projector Operation") and + mod.item.getAttribute("durationECMJammerBurstProjector"), + "durationECMJammerBurstProjector", + skill.getModifiedItemAttr("projECMDurationBonus") * skill.level) + + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Burst Projector Operation") and + mod.item.getAttribute("durationTargetIlluminationBurstProjector"), + "durationTargetIlluminationBurstProjector", + skill.getModifiedItemAttr("projECMDurationBonus") * skill.level) + + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Burst Projector Operation") and + mod.item.getAttribute("durationSensorDampeningBurstProjector"), + "durationSensorDampeningBurstProjector", + skill.getModifiedItemAttr("projECMDurationBonus") * skill.level) + + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Burst Projector Operation") and + mod.item.getAttribute("durationWeaponDisruptionBurstProjector"), + "durationWeaponDisruptionBurstProjector", + skill.getModifiedItemAttr("projECMDurationBonus") * skill.level) diff --git a/eos/effects/structureenergyneutralizerfalloff.py b/eos/effects/structureenergyneutralizerfalloff.py index 8b6bf5846..673630a6b 100644 --- a/eos/effects/structureenergyneutralizerfalloff.py +++ b/eos/effects/structureenergyneutralizerfalloff.py @@ -10,4 +10,4 @@ def handler(fit, container, context): and container.state >= State.ACTIVE) or hasattr(container, "amountActive")): amount = container.getModifiedItemAttr("energyNeutralizerAmount") time = container.getModifiedItemAttr("duration") - fit.addDrain(time, amount, 0) + fit.addDrain(container, time, amount, 0) diff --git a/eos/effects/structurerigmaxtargets.py b/eos/effects/structurerigmaxtargets.py index d7b5ecfe5..49506515f 100644 --- a/eos/effects/structurerigmaxtargets.py +++ b/eos/effects/structurerigmaxtargets.py @@ -3,4 +3,5 @@ type = "passive" def handler(fit, src, context): - fit.ship.increaseItemAttr("maxLockedTargets", src.getModifiedItemAttr("structureRigMaxTargetBonus")) + fit.extraAttributes.increase("maxTargetsLockedFromSkills", src.getModifiedItemAttr("structureRigMaxTargetBonus")) + diff --git a/eos/effects/usemissiles.py b/eos/effects/usemissiles.py index f212d2e5e..49ef3c5a0 100644 --- a/eos/effects/usemissiles.py +++ b/eos/effects/usemissiles.py @@ -4,9 +4,27 @@ # Modules from group: Missile Launcher Heavy (12 of 12) # Modules from group: Missile Launcher Rocket (15 of 15) # Modules named like: Launcher (151 of 151) -type = 'active' +type = 'active', "projected" -def handler(fit, module, context): +def handler(fit, src, context): # Set reload time to 10 seconds - module.reloadTime = 10000 + src.reloadTime = 10000 + + if "projected" in context: + if src.item.group.name == 'Missile Launcher Bomb': + # Bomb Launcher Cooldown Timer + moduleReactivationDelay = src.getModifiedItemAttr("moduleReactivationDelay") + + # Void and Focused Void Bombs + neutAmount = src.getModifiedChargeAttr("energyNeutralizerAmount") + + if moduleReactivationDelay and neutAmount: + fit.addDrain(src, moduleReactivationDelay, neutAmount, 0) + + # Lockbreaker Bombs + ecmStrengthBonus = src.getModifiedChargeAttr("scan{0}StrengthBonus".format(fit.scanType)) + + if ecmStrengthBonus: + strModifier = 1 - ecmStrengthBonus / fit.scanStrength + fit.ecmProjectedStr *= strModifier diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index 7f4607488..2e9f8bfe9 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -134,7 +134,6 @@ class Fit(object): self.__capRecharge = None self.__calculatedTargets = [] self.factorReload = False - self.fleet = None self.boostsFits = set() self.gangBoosts = None self.ecmProjectedStr = 1 @@ -449,9 +448,7 @@ class Fit(object): # oh fuck this is so janky # @todo should we pass in min/max to this function, or is abs okay? # (abs is old method, ccp now provides the aggregate function in their data) - print "Add command bonus: ", warfareBuffID, " - value: ", value - - if warfareBuffID not in self.commandBonuses or abs(self.commandBonuses[warfareBuffID][0]) < abs(value): + if warfareBuffID not in self.commandBonuses or abs(self.commandBonuses[warfareBuffID][1]) < abs(value): self.commandBonuses[warfareBuffID] = (runTime, value, module, effect) def __runCommandBoosts(self, runTime="normal"): @@ -463,31 +460,176 @@ class Fit(object): if runTime != effect_runTime: continue - context = ("commandRun", thing.__class__.__name__.lower()) - if isinstance(thing, Module): - # This should always be a gang effect, otherwise it wouldn't be added to commandBonuses - # @todo: Check this - if effect.isType("gang"): - # todo: ensure that these are run with the module is active only - context += ("commandRun",) - self.register(thing) - effect.handler(self, thing, context, warfareBuffID = warfareBuffID) + # This should always be a gang effect, otherwise it wouldn't be added to commandBonuses + # @todo: Check this + if effect.isType("gang"): + self.register(thing) - # if effect.isType("offline") or (effect.isType("passive") and thing.state >= State.ONLINE) or \ - # (effect.isType("active") and thing.state >= State.ACTIVE): - # # Run effect, and get proper bonuses applied - # try: - # self.register(thing) - # effect.handler(self, thing, context) - # except: - # pass - else: - # Run effect, and get proper bonuses applied - try: - self.register(thing) - effect.handler(self, thing, context) - except: - pass + if warfareBuffID == 10: # Shield Burst: Shield Harmonizing: Shield Resistance + for damageType in ("Em", "Explosive", "Thermal", "Kinetic"): + self.ship.boostItemAttr("shield%sDamageResonance" % damageType, value) + + if warfareBuffID == 11: # Shield Burst: Active Shielding: Repair Duration/Capacitor + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill( + "Shield Emission Systems"), "capacitorNeed", value) + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill( + "Shield Emission Systems"), "duration", value) + + if warfareBuffID == 12: # Shield Burst: Shield Extension: Shield HP + self.ship.boostItemAttr("shieldCapacity", value, stackingPenalties=True) + + if warfareBuffID == 13: # Armor Burst: Armor Energizing: Armor Resistance + for damageType in ("Em", "Thermal", "Explosive", "Kinetic"): + self.ship.boostItemAttr("armor%sDamageResonance" % damageType, value) + + if warfareBuffID == 14: # Armor Burst: Rapid Repair: Repair Duration/Capacitor + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill( + "Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), + "capacitorNeed", value) + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill( + "Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), "duration", + value) + + if warfareBuffID == 15: # Armor Burst: Armor Reinforcement: Armor HP + self.ship.boostItemAttr("armorHP", value, stackingPenalties=True) + + if warfareBuffID == 16: # Information Burst: Sensor Optimization: Scan Resolution + self.ship.boostItemAttr("scanResolution", value, stackingPenalties=True) + + if warfareBuffID == 17: # Information Burst: Electronic Superiority: EWAR Range and Strength + groups = ("ECM", "Sensor Dampener", "Weapon Disruptor", "Target Painter") + self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, + stackingPenalties=True) + self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, + "falloffEffectiveness", value, stackingPenalties=True) + + for scanType in ("Magnetometric", "Radar", "Ladar", "Gravimetric"): + self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "ECM", + "scan%sStrengthBonus" % scanType, value, + stackingPenalties=True) + + for attr in ( + "missileVelocityBonus", "explosionDelayBonus", "aoeVelocityBonus", "falloffBonus", + "maxRangeBonus", "aoeCloudSizeBonus", "trackingSpeedBonus"): + self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor", + attr, value) + + for attr in ("maxTargetRangeBonus", "scanResolutionBonus"): + self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Sensor Dampener", + attr, value) + + self.modules.filteredItemBoost(lambda mod: mod.item.gorup.name == "Target Painter", + "signatureRadiusBonus", value, stackingPenalties=True) + + if warfareBuffID == 18: # Information Burst: Electronic Hardening: Scan Strength + for scanType in ("Gravimetric", "Radar", "Ladar", "Magnetometric"): + self.ship.boostItemAttr("scan%sStrength" % scanType, value, stackingPenalties=True) + + if warfareBuffID == 19: # Information Burst: Electronic Hardening: RSD/RWD Resistance + self.ship.boostItemAttr("sensorDampenerResistance", value) + self.ship.boostItemAttr("weaponDisruptionResistance", value) + + if warfareBuffID == 26: # Information Burst: Sensor Optimization: Targeting Range + self.ship.boostItemAttr("maxTargetRange", value) + + if warfareBuffID == 20: # Skirmish Burst: Evasive Maneuvers: Signature Radius + self.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) + + if warfareBuffID == 21: # Skirmish Burst: Interdiction Maneuvers: Tackle Range + groups = ("Stasis Web", "Warp Scrambler") + self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, + stackingPenalties=True) + + if warfareBuffID == 22: # Skirmish Burst: Rapid Deployment: AB/MWD Speed Increase + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Afterburner") or mod.item.requiresSkill( + "High Speed Maneuvering"), "speedFactor", value, stackingPenalties=True) + + if warfareBuffID == 23: # Mining Burst: Mining Laser Field Enhancement: Mining/Survey Range + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( + "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "maxRange", + value, stackingPenalties=True) + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("CPU Management"), + "surveyScanRange", value, stackingPenalties=True) + + if warfareBuffID == 24: # Mining Burst: Mining Laser Optimization: Mining Capacitor/Duration + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( + "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), + "capacitorNeed", value, stackingPenalties=True) + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( + "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "duration", + value, stackingPenalties=True) + + if warfareBuffID == 25: # Mining Burst: Mining Equipment Preservation: Crystal Volatility + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"), + "crystalVolatilityChance", value, stackingPenalties=True) + + if warfareBuffID == 60: # Skirmish Burst: Evasive Maneuvers: Agility + self.ship.boostItemAttr("agility", value, stackingPenalties=True) + + # Titan effects + + if warfareBuffID == 39: # Avatar Effect Generator : Capacitor Recharge bonus + self.ship.boostItemAttr("rechargeRate", value, stackingPenalties=True) + + if warfareBuffID == 40: # Avatar Effect Generator : Kinetic resistance bonus + for attr in ("armorKineticDamageResonance", "shieldKineticDamageResonance", "kineticDamageResonance"): + self.ship.boostItemAttr(attr, value, stackingPenalties=True) + + if warfareBuffID == 41: # Avatar Effect Generator : EM resistance penalty + for attr in ("armorEmDamageResonance", "shieldEmDamageResonance", "emDamageResonance"): + self.ship.boostItemAttr(attr, value, stackingPenalties=True) + + if warfareBuffID == 42: # Erebus Effect Generator : Armor HP bonus + self.ship.boostItemAttr("armorHP", value, stackingPenalties=True) + + if warfareBuffID == 43: # Erebus Effect Generator : Explosive resistance bonus + for attr in ("armorExplosiveDamageResonance", "shieldExplosiveDamageResonance", "explosiveDamageResonance"): + self.ship.boostItemAttr(attr, value, stackingPenalties=True) + + if warfareBuffID == 44: # Erebus Effect Generator : Thermal resistance penalty + for attr in ("armorThermalDamageResonance", "shieldThermalDamageResonance", "thermalDamageResonance"): + self.ship.boostItemAttr(attr, value, stackingPenalties=True) + + if warfareBuffID == 45: # Ragnarok Effect Generator : Signature Radius bonus + self.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) + + if warfareBuffID == 46: # Ragnarok Effect Generator : Thermal resistance bonus + for attr in ("armorThermalDamageResonance", "shieldThermalDamageResonance", "thermalDamageResonance"): + self.ship.boostItemAttr(attr, value, stackingPenalties=True) + + if warfareBuffID == 47: # Ragnarok Effect Generator : Explosive resistance penaly + for attr in ("armorExplosiveDamageResonance", "shieldExplosiveDamageResonance", "explosiveDamageResonance"): + self.ship.boostItemAttr(attr, value, stackingPenalties=True) + + if warfareBuffID == 48: # Leviathan Effect Generator : Shield HP bonus + self.ship.boostItemAttr("shieldCapacity", value, stackingPenalties=True) + + if warfareBuffID == 49: # Leviathan Effect Generator : EM resistance bonus + for attr in ("armorEmDamageResonance", "shieldEmDamageResonance", "emDamageResonance"): + self.ship.boostItemAttr(attr, value, stackingPenalties=True) + + if warfareBuffID == 50: # Leviathan Effect Generator : Kinetic resistance penalty + for attr in ("armorKineticDamageResonance", "shieldKineticDamageResonance", "kineticDamageResonance"): + self.ship.boostItemAttr(attr, value, stackingPenalties=True) + + if warfareBuffID == 51: # Avatar Effect Generator : Velocity penalty + self.ship.boostItemAttr("maxVelocity", value, stackingPenalties=True) + + if warfareBuffID == 52: # Erebus Effect Generator : Shield RR penalty + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Emission Systems"), "shieldBonus", value, stackingPenalties=True) + + if warfareBuffID == 53: # Leviathan Effect Generator : Armor RR penalty + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "armorDamageAmount", value, stackingPenalties=True) + + if warfareBuffID == 54: # Ragnarok Effect Generator : Laser and Hybrid Optimal penalty + groups = ("Energy Weapon", "Hybrid Weapon") + self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, stackingPenalties=True) del self.commandBonuses[warfareBuffID] @@ -506,7 +648,6 @@ class Fit(object): # Don't inspect this, we genuinely want to reassign self # noinspection PyMethodFirstArgAssignment self = copy.deepcopy(self) - self.fleet = copied.fleet logger.debug("Handling self projection - making shadow copy of fit. %r => %r", copied, self) # we delete the fit because when we copy a fit, flush() is # called to properly handle projection updates. However, we do @@ -514,31 +655,11 @@ class Fit(object): eos.db.saveddata_session.delete(self) if self.commandFits and not withBoosters: - print "Calculatate command fits and apply to fit" for fit in self.commandFits: if self == fit: - print "nope" continue - print "calculating ", fit + fit.calculateModifiedAttributes(self, True) - # - # for thing in chain(fit.modules, fit.implants, fit.character.skills, (fit.ship,)): - # if thing.item is None: - # continue - # for effect in thing.item.effects.itervalues(): - # # And check if it actually has gang boosting effects - # if effect.isType("gang"): - # effect.handler(self, thing, ("commandRun")) - - # if self.fleet is not None and withBoosters is True: - # logger.debug("Fleet is set, gathering gang boosts") - # - # self.gangBoosts = self.fleet.recalculateLinear(withBoosters=withBoosters) - # - # timer.checkpoint("Done calculating gang boosts for %r"%self) - - # elif self.fleet is None: - # self.gangBoosts = None # If we're not explicitly asked to project fit onto something, # set self as target fit @@ -625,7 +746,7 @@ class Fit(object): self.__calculated = True # Only apply projected fits if fit it not projected itself. - if not projected: + if not projected and not withBoosters: for fit in self.projectedFits: if fit.getProjectionInfo(self.ID).active: fit.calculateModifiedAttributes(self, withBoosters=withBoosters, dirtyStorage=dirtyStorage) diff --git a/eos/saveddata/fleet.py b/eos/saveddata/fleet.py deleted file mode 100644 index 6fc1b6330..000000000 --- a/eos/saveddata/fleet.py +++ /dev/null @@ -1,341 +0,0 @@ -# =============================================================================== -# Copyright (C) 2010 Diego Duclos -# -# This file is part of eos. -# -# eos is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# eos is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with eos. If not, see . -# =============================================================================== - -from copy import deepcopy -from itertools import chain - -from eos.types import Skill, Module, Ship - - -class Fleet(object): - def calculateModifiedAttributes(self): - # Make sure ALL fits in the gang have been calculated - for c in chain(self.wings, (self.leader,)): - if c is not None: - c.calculateModifiedAttributes() - - leader = self.leader - self.booster = booster = self.booster if self.booster is not None else leader - self.broken = False - self.store = store = Store() - store.set(booster, "fleet") - # Go all the way down for each subtree we have. - for wing in self.wings: - wing.calculateGangBonusses(store) - - # Check skill requirements and wing amount to see if we break or not - if len(self.wings) == 0 or leader is None or leader.character is None or leader.character.getSkill( - "Fleet Command").level < len(self.wings): - self.broken = True - - # Now calculate our own if we aren't broken - if not self.broken: - # We only get our own bonuses *Sadface* - store.apply(leader, "fleet") - - def recalculateLinear(self, withBoosters=True, dirtyStorage=None): - self.store = Store() - self.linearBoosts = {} - if withBoosters is True: - if self.leader is not None and self.leader.character is not None and self.leader.character.getSkill( - "Fleet Command").level >= 1: - self.leader.boostsFits.add(self.wings[0].squads[0].members[0].ID) - self.leader.calculateModifiedAttributes() - self.store.set(self.leader, "squad", clearingUpdate=True) - else: - self.store = Store() - if self.leader is not None: - try: - self.leader.boostsFits.remove(self.wings[0].squads[0].members[0].ID) - except KeyError: - pass - self.wings[0].recalculateLinear(self.store, withBoosters=withBoosters, dirtyStorage=dirtyStorage) - return self.linearBoosts - - def count(self): - total = 0 - for wing in self.wings: - total += wing.count() - - return total - - def extend(self): - self.wings.append(Wing()) - - def __deepcopy__(self, memo): - copy = Fleet() - copy.name = self.name - copy.booster = deepcopy(self.booster) - copy.leader = deepcopy(self.leader) - for wing in self.wings: - copy.wings.append(deepcopy(wing)) - - return copy - - -class Wing(object): - def calculateModifiedAttributes(self): - for c in chain(self.squads, (self.leader,)): - if c is not None: - c.calculateModifiedAttributes() - - def calculateGangBonusses(self, store): - self.broken = False - leader = self.leader - self.booster = booster = self.booster if self.booster is not None else leader - - store.set(booster, "wing") - - # ALWAYS move down - for squad in self.squads: - squad.calculateGangBonusses(store) - - # Check skill requirements and squad amount to see if we break or not - if len(self.squads) == 0 or leader is None or leader.character is None or leader.character.getSkill( - "Wing Command").level < len(self.squads): - self.broken = True - - # Check if we aren't broken, if we aren't, boost - if not self.broken: - store.apply(leader, "wing") - else: - # We broke, don't go up - self.gang.broken = True - - def recalculateLinear(self, store, withBoosters=True, dirtyStorage=None): - if withBoosters is True: - if self.leader is not None and self.leader.character is not None and self.leader.character.getSkill( - "Wing Command").level >= 1: - self.leader.boostsFits.add(self.squads[0].members[0].ID) - self.leader.calculateModifiedAttributes() - store.set(self.leader, "squad", clearingUpdate=False) - else: - store = Store() - if self.gang.leader is not None: - try: - self.gang.leader.boostsFits.remove(self.squads[0].members[0].ID) - except KeyError: - pass - if self.leader is not None: - try: - self.leader.boostsFits.remove(self.squads[0].members[0].ID) - except KeyError: - pass - self.squads[0].recalculateLinear(store, withBoosters=withBoosters, dirtyStorage=dirtyStorage) - - def count(self): - total = 0 if self.leader is None else 1 - for squad in self.squads: - total += squad.count() - - return total - - def extend(self): - self.squads.append(Squad()) - - def __deepcopy__(self, memo): - copy = Wing() - copy.booster = deepcopy(self.booster) - copy.leader = deepcopy(self.leader) - for squad in self.squads: - copy.squads.append(deepcopy(squad)) - - return copy - - -class Squad(object): - def calculateModifiedAttributes(self): - for member in self.members: - member.calculateModifiedAttributes() - - def calculateGangBonusses(self, store): - self.broken = False - leader = self.leader - self.booster = booster = self.booster if self.booster is not None else leader - store.set(booster, "squad") - - # Check skill requirements and squad size to see if we break or not - if len(self.members) <= 0 or leader is None or leader.character is None or leader.character.getSkill( - "Leadership").level * 2 < len(self.members): - self.broken = True - - if not self.broken: - for member in self.members: - store.apply(member, "squad") - else: - self.wing.broken = True - - def recalculateLinear(self, store, withBoosters=True, dirtyStorage=None): - if withBoosters is True: - if self.leader is not None and self.leader.character is not None and self.leader.character.getSkill( - "Leadership").level >= 1: - self.leader.boostsFits.add(self.members[0].ID) - self.leader.calculateModifiedAttributes(dirtyStorage=dirtyStorage) - store.set(self.leader, "squad", clearingUpdate=False) - else: - store = Store() - if self.leader is not None: - try: - self.leader.boostsFits.remove(self.members[0].ID) - except KeyError: - pass - if self.wing.leader is not None: - try: - self.wing.leader.boostsFits.remove(self.members[0].ID) - except KeyError: - pass - if self.wing.gang.leader is not None: - try: - self.wing.gang.leader.boostsFits.remove(self.members[0].ID) - except KeyError: - pass - if getattr(self.wing.gang, "linearBoosts", None) is None: - self.wing.gang.linearBoosts = {} - dict = store.bonuses["squad"] - for boostedAttr, boostInfoList in dict.iteritems(): - for boostInfo in boostInfoList: - effect, thing = boostInfo - # Get current boost value for given attribute, use 0 as fallback if - # no boosts applied yet - currBoostAmount = self.wing.gang.linearBoosts.get(boostedAttr, (0,))[0] - # Attribute name which is used to get boost value - newBoostAttr = effect.getattr("gangBonus") or "commandBonus" - # Get boost amount for current boost - newBoostAmount = thing.getModifiedItemAttr(newBoostAttr) or 0 - # Skill used to modify the gang bonus (for purposes of comparing old vs new) - newBoostSkill = effect.getattr("gangBonusSkill") - # If skill takes part in gang boosting, multiply by skill level - if type(thing) == Skill: - newBoostAmount *= thing.level - # boost the gang bonus based on skill noted in effect file - if newBoostSkill: - newBoostAmount *= thing.parent.character.getSkill(newBoostSkill).level - # If new boost is more powerful, replace older one with it - if abs(newBoostAmount) > abs(currBoostAmount): - self.wing.gang.linearBoosts[boostedAttr] = (newBoostAmount, boostInfo) - - def count(self): - return len(self.members) - - def __deepcopy__(self, memo): - copy = Squad() - copy.booster = deepcopy(self.booster) - copy.leader = deepcopy(self.leader) - for member in self.members: - copy.members.append(deepcopy(member)) - - return copy - - -class Store(object): - def __init__(self): - # Container for gang boosters and their respective bonuses, three-layered - self.bonuses = {} - for dictType in ("fleet", "wing", "squad"): - self.bonuses[dictType] = {} - # Container for boosted fits and corresponding boosts applied onto them - self.boosts = {} - - def set(self, fitBooster, layer, clearingUpdate=True): - """Add all gang boosts of given fit for given layer to boost store""" - if fitBooster is None: - return - - # This dict contains all bonuses for specified layer - dict = self.bonuses[layer] - if clearingUpdate is True: - # Clear existing bonuses - dict.clear() - - # Go through everything which can be used as gang booster - for thing in chain(fitBooster.modules, fitBooster.implants, fitBooster.character.skills, (fitBooster.ship,)): - if thing.item is None: - continue - for effect in thing.item.effects.itervalues(): - # And check if it actually has gang boosting effects - if effect.isType("gang"): - # Attribute which is boosted - boostedAttr = effect.getattr("gangBoost") - # List which contains all bonuses for given attribute for given layer - l = dict.get(boostedAttr) - # If there was no list, create it - if l is None: - l = dict[boostedAttr] = [] - # And append effect which is used to boost stuff and carrier of this effect - l.append((effect, thing)) - - contextMap = {Skill: "skill", - Ship: "ship", - Module: "module"} - - def apply(self, fitBoosted, layer): - """Applies all boosts onto given fit for given layer""" - if fitBoosted is None: - return - # Boosts dict contains all bonuses applied onto given fit - self.boosts[fitBoosted] = boosts = {} - # Go through all bonuses for given layer, and find highest one per boosted attribute - for currLayer in ("fleet", "wing", "squad"): - # Dictionary with boosts for given layer - dict = self.bonuses[currLayer] - for boostedAttr, boostInfoList in dict.iteritems(): - for boostInfo in boostInfoList: - effect, thing = boostInfo - # Get current boost value for given attribute, use 0 as fallback if - # no boosts applied yet - currBoostAmount = boosts.get(boostedAttr, (0,))[0] - # Attribute name which is used to get boost value - newBoostAttr = effect.getattr("gangBonus") or "commandBonus" - # Get boost amount for current boost - newBoostAmount = thing.getModifiedItemAttr(newBoostAttr) or 0 - # Skill used to modify the gang bonus (for purposes of comparing old vs new) - newBoostSkill = effect.getattr("gangBonusSkill") - # If skill takes part in gang boosting, multiply by skill level - if type(thing) == Skill: - newBoostAmount *= thing.level - # boost the gang bonus based on skill noted in effect file - if newBoostSkill: - newBoostAmount *= thing.parent.character.getSkill(newBoostSkill).level - # If new boost is more powerful, replace older one with it - if abs(newBoostAmount) > abs(currBoostAmount): - boosts[boostedAttr] = (newBoostAmount, boostInfo) - - # Don't look further down then current layer, wing commanders don't get squad bonuses and all that - if layer == currLayer: - break - - self.modify(fitBoosted) - - def getBoosts(self, fit): - """Return all boosts applied onto given fit""" - return self.boosts.get(fit) - - def modify(self, fitBoosted): - # Get all boosts which should be applied onto current fit - boosts = self.getBoosts(fitBoosted) - # Now we got it all figured out, actually do the useful part of all this - for name, info in boosts.iteritems(): - # Unpack all data required to run effect properly - effect, thing = info[1] - context = ("gang", self.contextMap[type(thing)]) - # Run effect, and get proper bonuses applied - try: - effect.handler(fitBoosted, thing, context) - except: - pass diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index 1a1c56de3..6b597a904 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -201,6 +201,11 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): else: return self.__chargeCycles + @property + def modPosition(self): + if self.owner: + return self.owner.modules.index(self) + @property def hpBeforeReload(self): """ @@ -265,7 +270,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): flightTime = self.getModifiedChargeAttr("explosionDelay") / 1000.0 mass = self.getModifiedChargeAttr("mass") agility = self.getModifiedChargeAttr("agility") - if maxVelocity and flightTime and mass and agility: + if maxVelocity and (flightTime or mass or agility): accelTime = min(flightTime, mass * agility / 1000000) # Average distance done during acceleration duringAcceleration = maxVelocity / 2 * accelTime @@ -655,10 +660,14 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): effect.activeByDefault and \ (effect.isType("offline") or (effect.isType("passive") and self.state >= State.ONLINE) or + (effect.isType("active") and self.state >= State.ACTIVE))\ and ((projected and effect.isType("projected")) or not projected)\ and ((gang and effect.isType("gang")) or not gang): - effect.handler(fit, self, context) + try: + effect.handler(fit, self, context, effect=effect) + except: + effect.handler(fit, self, context) @property def cycleTime(self): diff --git a/eos/types.py b/eos/types.py index 80f36a826..e6663689f 100644 --- a/eos/types.py +++ b/eos/types.py @@ -40,7 +40,6 @@ from eos.saveddata.implantSet import ImplantSet from eos.saveddata.booster import Booster from eos.saveddata.fit import Fit, ImplantLocation from eos.saveddata.mode import Mode -from eos.saveddata.fleet import Fleet, Wing, Squad from eos.saveddata.miscData import MiscData from eos.saveddata.override import Override diff --git a/fun.py b/fun.py new file mode 100644 index 000000000..5f14c34e6 --- /dev/null +++ b/fun.py @@ -0,0 +1,5 @@ +problem 15 + +number of moves: XxY + +each block added introduces two possible moves diff --git a/gui/additionsPane.py b/gui/additionsPane.py index c7b28b48b..e67963ee1 100644 --- a/gui/additionsPane.py +++ b/gui/additionsPane.py @@ -29,7 +29,6 @@ from gui.projectedView import ProjectedView from gui.commandView import CommandView from gui.notesView import NotesView from gui.pyfatogglepanel import TogglePanel -from gui.gangView import GangView from gui.bitmapLoader import BitmapLoader import gui.chromeTabs diff --git a/gui/builtinViews/__init__.py b/gui/builtinViews/__init__.py index 46a500f7b..d51fdbad6 100644 --- a/gui/builtinViews/__init__.py +++ b/gui/builtinViews/__init__.py @@ -1 +1 @@ -__all__ = ["fittingView", "fleetView", "implantEditor"] +__all__ = ["fittingView", "implantEditor"] diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 597687d2d..e97a176a7 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -224,7 +224,7 @@ class FittingView(d.Display): if row != -1 and row not in self.blanks: data = wx.PyTextDataObject() - data.SetText("fitting:"+str(self.mods[row].position)) + data.SetText("fitting:"+str(self.mods[row].modPosition)) dropSource = wx.DropSource(self) dropSource.SetData(data) @@ -356,7 +356,7 @@ class FittingView(d.Display): if dstRow != -1 and dstRow not in self.blanks: sFit = service.Fit.getInstance() fitID = self.mainFrame.getActiveFit() - moduleChanged = sFit.changeModule(fitID, self.mods[dstRow].position, srcIdx) + moduleChanged = sFit.changeModule(fitID, self.mods[dstRow].modPosition, srcIdx) if moduleChanged is None: # the new module doesn't fit in specified slot, try to simply append it wx.PostEvent(self.mainFrame, gui.marketBrowser.ItemSelected(itemID=srcIdx)) @@ -371,7 +371,7 @@ class FittingView(d.Display): module = self.mods[dstRow] sFit = service.Fit.getInstance() - sFit.moveCargoToModule(self.mainFrame.getActiveFit(), module.position, srcIdx, mstate.CmdDown() and module.isEmpty) + sFit.moveCargoToModule(self.mainFrame.getActiveFit(), module.modPosition, srcIdx, mstate.CmdDown() and module.isEmpty) wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit())) @@ -389,6 +389,7 @@ class FittingView(d.Display): dstRow, _ = self.HitTest((x, y)) if dstRow != -1 and dstRow not in self.blanks: + mod1 = fit.modules[srcIdx] mod2 = self.mods[dstRow] @@ -397,9 +398,9 @@ class FittingView(d.Display): return if clone and mod2.isEmpty: - sFit.cloneModule(self.mainFrame.getActiveFit(), mod1.position, mod2.position) + sFit.cloneModule(self.mainFrame.getActiveFit(), srcIdx, mod2.modPosition) else: - sFit.swapModules(self.mainFrame.getActiveFit(), mod1.position, mod2.position) + sFit.swapModules(self.mainFrame.getActiveFit(), srcIdx, mod2.modPosition) wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit())) diff --git a/gui/builtinViews/fleetView.py b/gui/builtinViews/fleetView.py deleted file mode 100644 index bc6eef9a2..000000000 --- a/gui/builtinViews/fleetView.py +++ /dev/null @@ -1,140 +0,0 @@ -import wx.gizmos -import gui.fleetBrowser -import service -from gui.bitmapLoader import BitmapLoader - -#Tab spawning handler -class FleetSpawner(gui.multiSwitch.TabSpawner): - def __init__(self, multiSwitch): - self.multiSwitch = multiSwitch - mainFrame = gui.mainFrame.MainFrame.getInstance() - mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_SELECTED, self.fleetSelected) - - def fleetSelected(self, event): - if self.multiSwitch.GetPageCount() == 0: - self.multiSwitch.AddPage(wx.Panel(self.multiSwitch, size = (0,0)), "Empty Tab") - - view = FleetView(self.multiSwitch) - self.multiSwitch.ReplaceActivePage(view) - view.populate(event.fleetID) - view.Show() - -FleetSpawner.register() - -class FleetView(wx.gizmos.TreeListCtrl): - def __init__(self, parent, size = (0,0)): - wx.gizmos.TreeListCtrl.__init__(self, parent, size = size) - - self.tabManager = parent - - self.fleetId = None - self.fleetImg = BitmapLoader.getImage("53_16", "icons") - - self.imageList = wx.ImageList(16, 16) - self.SetImageList(self.imageList) - - for col in ("", "Fit", "Shiptype", "Character", "Bonusses"): - self.AddColumn(col) - - self.SetMainColumn(1) - self.icons = {} - self.addImage = self.imageList.Add(BitmapLoader.getBitmap("add_small", "gui")) - for icon in ("fb", "fc", "sb", "sc", "wb", "wc"): - self.icons[icon] = self.imageList.Add(BitmapLoader.getBitmap("fleet_%s_small" % icon, "gui")) - - self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.checkNew) - self.mainFrame = gui.mainFrame.MainFrame.getInstance() - - self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_RENAMED, self.fleetRenamed) - self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_REMOVED, self.fleetRemoved) - - def Destroy(self): - self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_REMOVED, handler = self.fleetRemoved) - self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_RENAMED, handler = self.fleetRenamed) - wx.gizmos.TreeListCtrl.Destroy(self) - - def fleetRenamed(self, event): - if event.fleetID == self.fleetId: - sFleet = service.Fleet.getInstance() - f = sFleet.getFleetByID(event.fleetID) - self.UpdateTab(f.name, self.fleetImg) - - event.Skip() - - def fleetRemoved(self, event): - if event.fleetID == self.fleetId: - self.tabManager.DeletePage(self.tabManager.GetPageIndex(self)) - - event.Skip() - - def checkNew(self, event): - data = self.GetPyData(event.Item) - if data and isinstance(data, tuple) and data[0] == "add": - layer = data[1] - - - def UpdateTab(self, name, img): - self.tabManager.SetPageTextIcon(self.tabManager.GetSelection(), name, img) - - def populate(self, fleetID): - sFleet = service.Fleet.getInstance() - f = sFleet.getFleetByID(fleetID) - self.fleetId = fleetID - - self.UpdateTab( f.name, self.fleetImg) - self.fleet = f - self.DeleteAllItems() - root = self.AddRoot("") - - self.setEntry(root, f.leader, "fleet", f) - for wing in f.wings: - wingId = self.AppendItem(root, "") - self.setEntry(wingId, wing.leader, "wing", wing) - for squad in wing.squads: - for member in squad.members: - memberId = self.AppendItem(wingId, "") - self.setEntry(memberId, member, "squad", squad) - - self.addAdder(wingId, "squad") - - self.addAdder(root, "wing") - - self.ExpandAll(root) - self.SetColumnWidth(0, 16) - for i in xrange(1, 5): - self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER) - headerWidth = self.GetColumnWidth(i) + 5 - self.SetColumnWidth(i, wx.LIST_AUTOSIZE) - baseWidth = self.GetColumnWidth(i) - if baseWidth < headerWidth: - self.SetColumnWidth(i, headerWidth) - else: - self.SetColumnWidth(i, baseWidth) - - - def addAdder(self, treeItemId, layer): - id = self.AppendItem(treeItemId, "Add new %s" % layer.capitalize()) - self.SetPyData(id, ("add", layer)) - self.SetItemImage(id, self.addImage, 1) - - def setEntry(self, treeItemId, fit, layer, info): - self.SetPyData(treeItemId, info) - if fit is None: - self.SetItemText(treeItemId, "%s Commander" % layer.capitalize(), 1) - else: - fleet = self.fleet - if fit == info.booster: - self.SetItemImage(treeItemId, self.icons["%sb" % layer[0]], 0) - elif fit == info.leader: - self.SetItemImage(treeItemId, self.icons["%sc" % layer[0]], 1) - - self.SetItemText(treeItemId, fit.name, 1) - self.SetItemText(treeItemId, fit.ship.item.name, 2) - self.SetItemText(treeItemId, fit.character.name, 3) - boosts = fleet.store.getBoosts(fit) - if boosts: - bonusses = [] - for name, info in boosts.iteritems(): - bonusses.append("%s: %.2g" % (name, info[0])) - - self.SetItemText(treeItemId, ", ".join(bonusses), 3) diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py deleted file mode 100644 index 7476d7d7f..000000000 --- a/gui/fleetBrowser.py +++ /dev/null @@ -1,456 +0,0 @@ -import wx -import copy -from gui.bitmapLoader import BitmapLoader -import gui.mainFrame -from gui.PFListPane import PFListPane -import service.fleet -from gui.utils.drawUtils import GetPartialText - -from wx.lib.buttons import GenBitmapButton - -import gui.utils.colorUtils as colorUtils -import gui.utils.drawUtils as drawUtils - -import gui.sfBrowserItem as SFItem - -FleetSelected, EVT_FLEET_SELECTED = wx.lib.newevent.NewEvent() -FleetRenamed, EVT_FLEET_RENAMED = wx.lib.newevent.NewEvent() -FleetRemoved, EVT_FLEET_REMOVED = wx.lib.newevent.NewEvent() - - -FleetItemSelect, EVT_FLEET_ITEM_SELECT = wx.lib.newevent.NewEvent() -FleetItemDelete, EVT_FLEET_ITEM_DELETE = wx.lib.newevent.NewEvent() -FleetItemNew, EVT_FLEET_ITEM_NEW = wx.lib.newevent.NewEvent() -FleetItemCopy, EVT_FLEET_ITEM_COPY = wx.lib.newevent.NewEvent() -FleetItemRename, EVT_FLEET_ITEM_RENAME = wx.lib.newevent.NewEvent() - - - -class FleetBrowser(wx.Panel): - def __init__(self, parent): - wx.Panel.__init__(self, parent) - - self.sFleet = service.fleet.Fleet.getInstance() - self.mainFrame = gui.mainFrame.MainFrame.getInstance() - - mainSizer = wx.BoxSizer(wx.VERTICAL) - - self.hpane = FleetBrowserHeader(self) - mainSizer.Add(self.hpane, 0, wx.EXPAND) - - self.m_sl2 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) - mainSizer.Add( self.m_sl2, 0, wx.EXPAND, 0 ) - - self.fleetItemContainer = PFFleetItemContainer(self) - - mainSizer.Add(self.fleetItemContainer, 1, wx.EXPAND) - - self.SetSizer(mainSizer) - self.Layout() - - self.filter = "" - self.fleetIDMustEditName = -1 - - self.Bind(wx.EVT_SIZE, self.SizeRefreshList) - - self.Bind(EVT_FLEET_ITEM_NEW, self.AddNewFleetItem) - self.Bind(EVT_FLEET_ITEM_SELECT, self.SelectFleetItem) - self.Bind(EVT_FLEET_ITEM_DELETE, self.DeleteFleetItem) - self.Bind(EVT_FLEET_ITEM_COPY, self.CopyFleetItem) - self.Bind(EVT_FLEET_ITEM_RENAME, self.RenameFleetItem) - - self.PopulateFleetList() - - def AddNewFleetItem(self, event): - fleetName = event.fleetName - newFleet = self.sFleet.addFleet() - self.sFleet.renameFleet(newFleet, fleetName) - - self.fleetIDMustEditName = newFleet.ID - self.AddItem(newFleet.ID, newFleet.name, newFleet.count()) - - def SelectFleetItem(self, event): - fleetID = event.fleetID - self.fleetItemContainer.SelectWidgetByFleetID(fleetID) - wx.PostEvent(self.mainFrame, FleetSelected(fleetID=fleetID)) - - def CopyFleetItem(self, event): - fleetID = event.fleetID - fleet = self.sFleet.copyFleetByID(fleetID) - - fleetName = fleet.name + " Copy" - self.sFleet.renameFleet(fleet,fleetName) - - self.fleetIDMustEditName = fleet.ID - self.AddItem(fleet.ID, fleet.name, fleet.count()) - - self.fleetItemContainer.SelectWidgetByFleetID(fleet.ID) - wx.PostEvent(self.mainFrame, FleetSelected(fleetID=fleet.ID)) - - def RenameFleetItem(self, event): - fleetID = event.fleetID - fleet = self.sFleet.getFleetByID(fleetID) - - newFleetName = event.fleetName - - self.sFleet.renameFleet(fleet, newFleetName) - wx.PostEvent(self.mainFrame, FleetRenamed(fleetID = fleet.ID)) - - def DeleteFleetItem(self, event): - self.sFleet.deleteFleetByID(event.fleetID) - self.PopulateFleetList() - wx.PostEvent(self.mainFrame, FleetRemoved(fleetID = event.fleetID)) - - def AddItem (self, ID, name, count): - self.fleetItemContainer.AddWidget(FleetItem(self, ID, name, count)) - widget = self.fleetItemContainer.GetWidgetByFleetID(ID) - self.fleetItemContainer.RefreshList(True) - self.fleetItemContainer.ScrollChildIntoView(widget) - wx.PostEvent(self, FleetItemSelect(fleetID = ID)) - - def PopulateFleetList(self): - self.Freeze() - filter = self.filter - self.fleetItemContainer.RemoveAllChildren() - fleetList = self.sFleet.getFleetList() - for fleetID, fleetName, fleetCount in fleetList: - if fleetName.lower().find(filter.lower()) != -1: - self.fleetItemContainer.AddWidget(FleetItem(self, fleetID, fleetName, fleetCount)) - self.fleetItemContainer.RefreshList() - self.Thaw() - - def SetFilter(self, filter): - self.filter = filter - - def SizeRefreshList(self, event): - ewidth, eheight = event.GetSize() - self.Layout() - self.fleetItemContainer.Layout() - self.fleetItemContainer.RefreshList(True) - event.Skip() - - -class FleetBrowserHeader (wx.Panel): - def __init__(self, parent): - wx.Panel.__init__ (self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 24), style=wx.TAB_TRAVERSAL) - self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE ) ) - - self.newBmp = BitmapLoader.getBitmap("fit_add_small","gui") - bmpSize = (16,16) - - mainSizer = wx.BoxSizer(wx.HORIZONTAL) - - if 'wxMac' in wx.PlatformInfo: - bgcolour = wx.Colour(0, 0, 0, 0) - else: - bgcolour = wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE ) - - self.fbNewFleet = PFGenBitmapButton( self, wx.ID_ANY, self.newBmp, wx.DefaultPosition, bmpSize, wx.BORDER_NONE ) - mainSizer.Add(self.fbNewFleet, 0, wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL , 5) - self.fbNewFleet.SetBackgroundColour( bgcolour ) - - self.sl1 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_VERTICAL ) - mainSizer.Add( self.sl1, 0, wx.EXPAND |wx.LEFT, 5 ) - - self.tcFilter = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - mainSizer.Add( self.tcFilter, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5 ) - - self.stStatus = wx.StaticText( self, wx.ID_ANY, u"", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stStatus.Wrap( -1 ) - mainSizer.Add( self.stStatus, 1, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5 ) - - self.SetSizer(mainSizer) - self.Layout() - - self.fbNewFleet.Bind(wx.EVT_ENTER_WINDOW, self.fbNewEnterWindow) - self.fbNewFleet.Bind(wx.EVT_LEAVE_WINDOW, self.fbHItemLeaveWindow) - self.fbNewFleet.Bind(wx.EVT_BUTTON, self.OnNewFleetItem) - - self.tcFilter.Bind(wx.EVT_TEXT, self.OnFilterText) - - self.tcFilter.Bind(wx.EVT_ENTER_WINDOW, self.fbFilterEnterWindow) - self.tcFilter.Bind(wx.EVT_LEAVE_WINDOW, self.fbHItemLeaveWindow) - - def OnFilterText(self, event): - filter = self.tcFilter.GetValue() - self.Parent.SetFilter(filter) - self.Parent.PopulateFleetList() - event.Skip() - - def OnNewFleetItem(self, event): - wx.PostEvent(self.Parent, FleetItemNew(fleetName = "New Fleet")) - - def fbNewEnterWindow(self, event): - self.stStatus.SetLabel("New fleet") - self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_HAND)) - event.Skip() - - def fbHItemLeaveWindow(self, event): - self.stStatus.SetLabel("") - self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_ARROW)) - event.Skip() - - def fbFilterEnterWindow(self, event): - self.stStatus.SetLabel("Filter list") - event.Skip() - - - -class PFFleetItemContainer(PFListPane): - def __init__(self,parent): - PFListPane.__init__(self,parent) - self.selectedWidget = -1 - self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) - - def IsWidgetSelectedByContext(self, widget): - if self.GetWidgetList()[widget].IsSelected(): - return True - return False - - def GetWidgetIndex(self, widgetWnd): - return self.GetWidgetList().index(widgetWnd) - - def GetWidgetByFleetID(self, fleetID): - for widget in self.GetWidgetList(): - if widget.fleetID == fleetID: - return widget - return None - - def SelectWidget(self, widgetWnd): - wlist = self.GetWidgetList() - if self.selectedWidget != -1: - wlist[self.selectedWidget].SetSelected(False) - wlist[self.selectedWidget].Refresh() - windex = self.GetWidgetIndex(widgetWnd) - wlist[windex].SetSelected(True) - wlist[windex].Refresh() - self.selectedWidget = windex - - def SelectWidgetByFleetID(self, fleetID): - widgetWnd = self.GetWidgetByFleetID(fleetID) - if widgetWnd: - self.SelectWidget(widgetWnd) - - def RemoveWidget(self, child): - child.Destroy() - self.selectedWidget = -1 - self._wList.remove(child) - - - def RemoveAllChildren(self): - for widget in self._wList: - widget.Destroy() - - self.selectedWidget = -1 - self._wList = [] - - def OnLeftUp(self, event): - event.Skip() - -class FleetItem(SFItem.SFBrowserItem): - def __init__(self, parent, fleetID, fleetName, fleetCount, - id=wx.ID_ANY, pos=wx.DefaultPosition, - size=(0,40), style=0): - SFItem.SFBrowserItem.__init__(self, parent, size = size) - - self.fleetBrowser = self.Parent - self.fleetID = fleetID - self.fleetName = fleetName - self.fleetCount = fleetCount - - self.padding = 4 - - self.fontBig = wx.FontFromPixelSize((0,15),wx.SWISS, wx.NORMAL, wx.BOLD, False) - self.fontNormal = wx.FontFromPixelSize((0,14),wx.SWISS, wx.NORMAL, wx.NORMAL, False) - self.fontSmall = wx.FontFromPixelSize((0,12),wx.SWISS, wx.NORMAL, wx.NORMAL, False) - - self.copyBmp = BitmapLoader.getBitmap("fit_add_small", "gui") - self.renameBmp = BitmapLoader.getBitmap("fit_rename_small", "gui") - self.deleteBmp = BitmapLoader.getBitmap("fit_delete_small","gui") - self.acceptBmp = BitmapLoader.getBitmap("faccept_small", "gui") - self.fleetBmp = BitmapLoader.getBitmap("fleet_item_big", "gui") - - fleetImg = self.fleetBmp.ConvertToImage() - fleetImg = fleetImg.Blur(2) - - if not fleetImg.HasAlpha(): - fleetImg.InitAlpha() - - fleetImg = fleetImg.AdjustChannels(1, 1, 1, 0.5) - self.fleetEffBmp = wx.BitmapFromImage(fleetImg) - - self.toolbar.AddButton(self.copyBmp, "Copy", self.CopyFleetCB) - self.renameBtn = self.toolbar.AddButton(self.renameBmp, "Rename", self.RenameFleetCB) - self.toolbar.AddButton(self.deleteBmp, "Delete", self.DeleteFleetCB) - - self.editWidth = 150 - self.tcFleetName = wx.TextCtrl(self, wx.ID_ANY, "%s" % self.fleetName, wx.DefaultPosition, (self.editWidth,-1), wx.TE_PROCESS_ENTER) - - if self.fleetBrowser.fleetIDMustEditName != self.fleetID: - self.tcFleetName.Show(False) - else: - self.tcFleetName.SetFocus() - self.tcFleetName.SelectAll() - self.fleetBrowser.fleetIDMustEditName = -1 - self.renameBtn.SetBitmap(self.acceptBmp) - self.selected = True - - self.tcFleetName.Bind(wx.EVT_KILL_FOCUS, self.OnEditLostFocus) - self.tcFleetName.Bind(wx.EVT_TEXT_ENTER, self.RenameFleet) - self.tcFleetName.Bind(wx.EVT_KEY_DOWN, self.EditCheckEsc) - - - self.animCount = 0 - - def MouseLeftUp(self, event): - if self.tcFleetName.IsShown(): - self.RestoreEditButton() - else: - wx.PostEvent(self.fleetBrowser, FleetItemSelect(fleetID = self.fleetID)) - - def CopyFleetCB(self): - if self.tcFleetName.IsShown(): - self.RestoreEditButton() - return - - wx.PostEvent(self.fleetBrowser, FleetItemCopy(fleetID = self.fleetID)) - - def RenameFleetCB(self): - - if self.tcFleetName.IsShown(): - - self.RenameFleet(None) - self.RestoreEditButton() - - else: - self.tcFleetName.SetValue(self.fleetName) - self.tcFleetName.Show() - - self.renameBtn.SetBitmap(self.acceptBmp) - self.Refresh() - - self.tcFleetName.SetFocus() - self.tcFleetName.SelectAll() - - self.Refresh() - - def RenameFleet(self, event): - - newFleetName = self.tcFleetName.GetValue() - self.fleetName = newFleetName - - self.tcFleetName.Show(False) - - wx.PostEvent(self.fleetBrowser, FleetItemRename(fleetID = self.fleetID, fleetName = self.fleetName)) - self.Refresh() - - def DeleteFleetCB(self): - if self.tcFleetName.IsShown(): - self.RestoreEditButton() - return - wx.PostEvent(self.fleetBrowser, FleetItemDelete(fleetID = self.fleetID)) - - def RestoreEditButton(self): - self.tcFleetName.Show(False) - self.renameBtn.SetBitmap(self.renameBmp) - self.Refresh() - - def OnEditLostFocus(self, event): - self.RestoreEditButton() - self.Refresh() - - def EditCheckEsc(self, event): - if event.GetKeyCode() == wx.WXK_ESCAPE: - self.RestoreEditButton() - else: - event.Skip() - - def IsSelected(self): - return self.selected - - def UpdateElementsPos(self, mdc): - rect = self.GetRect() - - self.toolbarx = rect.width - self.toolbar.GetWidth() - self.padding - self.toolbary = (rect.height - self.toolbar.GetHeight()) / 2 - - self.toolbarx = self.toolbarx + self.animCount - - self.fleetBmpx = self.padding + (rect.height - self.fleetBmp.GetWidth()) / 2 - self.fleetBmpy = (rect.height - self.fleetBmp.GetHeight()) / 2 - - self.fleetBmpx -= self.animCount - - self.textStartx = self.fleetBmpx + self.fleetBmp.GetWidth() + self.padding - - self.fleetNamey = (rect.height - self.fleetBmp.GetHeight()) / 2 - - mdc.SetFont(self.fontBig) - wtext, htext = mdc.GetTextExtent(self.fleetName) - - self.fleetCounty = self.fleetNamey + htext - - mdc.SetFont(self.fontSmall) - - wlabel,hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel) - - self.thoverx = self.toolbarx - self.padding - wlabel - self.thovery = (rect.height - hlabel)/2 - self.thoverw = wlabel - - def DrawItem(self, mdc): - rect = self.GetRect() - - windowColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW) - textColor = colorUtils.GetSuitableColor(windowColor, 1) - - mdc.SetTextForeground(textColor) - - self.UpdateElementsPos(mdc) - - self.toolbar.SetPosition((self.toolbarx, self.toolbary)) - mdc.DrawBitmap(self.fleetEffBmp, self.fleetBmpx + 3, self.fleetBmpy + 2) - mdc.DrawBitmap(self.fleetBmp, self.fleetBmpx,self.fleetBmpy) - - mdc.SetFont(self.fontNormal) - - suffix = "%d ships" % self.fleetCount if self.fleetCount >1 else "%d ship" % self.fleetCount if self.fleetCount == 1 else "No ships" - fleetCount = "Fleet size: %s" % suffix - fleetCount = drawUtils.GetPartialText(mdc, fleetCount, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw) - - mdc.DrawText(fleetCount, self.textStartx, self.fleetCounty) - - mdc.SetFont(self.fontSmall) - mdc.DrawText(self.toolbar.hoverLabel, self.thoverx, self.thovery) - - mdc.SetFont(self.fontBig) - - pfname = drawUtils.GetPartialText(mdc, self.fleetName, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw) - mdc.DrawText(pfname, self.textStartx, self.fleetNamey) - - if self.tcFleetName.IsShown(): - self.AdjustControlSizePos(self.tcFleetName, self.textStartx, self.toolbarx - self.editWidth - self.padding) - - def AdjustControlSizePos(self, editCtl, start, end): - fnEditSize = editCtl.GetSize() - wSize = self.GetSize() - fnEditPosX = end - fnEditPosY = (wSize.height - fnEditSize.height)/2 - if fnEditPosX < start: - editCtl.SetSize((self.editWidth + fnEditPosX - start,-1)) - editCtl.SetPosition((start,fnEditPosY)) - else: - editCtl.SetSize((self.editWidth,-1)) - editCtl.SetPosition((fnEditPosX,fnEditPosY)) - - -class PFGenBitmapButton(GenBitmapButton): - def __init__(self, parent, id, bitmap, pos, size, style): - GenBitmapButton.__init__(self, parent, id, bitmap, pos, size, style) - self.bgcolor = wx.Brush(wx.WHITE) - - def SetBackgroundColour(self, color): - self.bgcolor = wx.Brush(color) - - def GetBackgroundBrush(self, dc): - return self.bgcolor diff --git a/gui/gangView.py b/gui/gangView.py deleted file mode 100644 index 106f14f98..000000000 --- a/gui/gangView.py +++ /dev/null @@ -1,412 +0,0 @@ -#=============================================================================== -# Copyright (C) 2010 Diego Duclos -# -# This file is part of pyfa. -# -# pyfa is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# pyfa is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with pyfa. If not, see . -#=============================================================================== -import wx -from wx.lib.scrolledpanel import ScrolledPanel - -import service -import gui.mainFrame -import gui.shipBrowser -import gui.globalEvents as GE - -from gui import characterEditor as CharEditor - -class GangView ( ScrolledPanel ): - - def __init__( self, parent ): - ScrolledPanel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 100,20 ), style = wx.TAB_TRAVERSAL | wx.HSCROLL | wx.VSCROLL ) - mainSizer = wx.BoxSizer( wx.VERTICAL ) - - self.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)) - self.mainFrame = gui.mainFrame.MainFrame.getInstance() - - self.draggedFitID = None - - help = '''Set fit as booster to display in dropdown, or drag fitting from\nship browser to this window, or right click fit and select booster role.''' - helpSizer = wx.BoxSizer( wx.HORIZONTAL ) - self.helpText = wx.StaticText( self, wx.ID_ANY, help, wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE ) - helpSizer.Add( self.helpText, 1, wx.ALL, 5 ) - - self.options = ["Fleet", "Wing", "Squad"] - - self.fleet = {} - for id, option in enumerate(self.options): - - # set content for each commander - self.fleet[id] = {} - self.fleet[id]['stLabel'] = wx.StaticText( self, wx.ID_ANY, self.options[id]+':', wx.DefaultPosition, wx.DefaultSize, 0 ) - self.fleet[id]['stText'] = wx.StaticText( self, wx.ID_ANY, 'None', wx.DefaultPosition, wx.DefaultSize, 0 ) - self.fleet[id]['chFit'] = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [] ) - self.fleet[id]['chChar'] = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [] ) - self.fleet[id]['fitSizer'] = wx.BoxSizer( wx.VERTICAL ) - - self.FitDNDPopupMenu = self.buildBoostermenu() - - contentFGSizer = wx.FlexGridSizer( 5, 3, 0, 0 ) - contentFGSizer.AddGrowableCol( 1 ) - contentFGSizer.SetFlexibleDirection( wx.BOTH ) - contentFGSizer.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED ) - - ### Header - self.stBooster = wx.StaticText( self, wx.ID_ANY, u"Booster", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stBooster.Wrap( -1 ) - self.stBooster.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString ) ) - contentFGSizer.Add( self.stBooster, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 ) - - self.stFits = wx.StaticText( self, wx.ID_ANY, u"Fits", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stFits.Wrap( -1 ) - self.stFits.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString ) ) - contentFGSizer.Add( self.stFits, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL, 5 ) - - self.stCharacters = wx.StaticText( self, wx.ID_ANY, u"Characters", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stCharacters.Wrap( -1 ) - self.stCharacters.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString ) ) - contentFGSizer.Add( self.stCharacters, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL, 5 ) - - self.m_staticline2 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) - contentFGSizer.Add( self.m_staticline2, 0, wx.EXPAND, 5 ) - - self.m_staticline3 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) - contentFGSizer.Add( self.m_staticline3, 0, wx.EXPAND, 5 ) - - self.m_staticline4 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) - contentFGSizer.Add( self.m_staticline4, 0, wx.EXPAND, 5 ) - - ### Content - for id in self.fleet: - # set various properties - self.fleet[id]['stLabel'].Wrap( -1 ) - self.fleet[id]['stLabel'].SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString ) ) - self.fleet[id]['stText'].Wrap( -1 ) - - # bind text and choice events - self.fleet[id]['stText'].Bind(wx.EVT_LEFT_DCLICK, self.RemoveBooster) - self.fleet[id]['stText'].Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow) - self.fleet[id]['stText'].Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow) - self.fleet[id]['stText'].SetToolTip(wx.ToolTip("Double click to remove booster")) - self.fleet[id]['chChar'].Bind(wx.EVT_CHOICE, self.CharChanged) - self.fleet[id]['chFit'].Bind(wx.EVT_CHOICE, self.OnFitChoiceSelected) - - # add fit text and choice to the fit sizer - self.fleet[id]['fitSizer'].Add( self.fleet[id]['stText'], 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - self.fleet[id]['fitSizer'].Add( self.fleet[id]['chFit'], 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 1 ) - - # add everything to the content sizer - contentFGSizer.Add( self.fleet[id]['stLabel'], 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - contentFGSizer.Add( self.fleet[id]['fitSizer'], 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 5 ) - contentFGSizer.Add( self.fleet[id]['chChar'], 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - - mainSizer.Add( contentFGSizer, 1, wx.EXPAND, 0 ) - mainSizer.Add( helpSizer, 0, wx.EXPAND, 0 ) - - self.SetSizer( mainSizer ) - self.SetAutoLayout(True) - self.SetupScrolling() - - self.mainFrame.Bind(GE.CHAR_LIST_UPDATED, self.RefreshCharacterList) - self.mainFrame.Bind(GE.FIT_CHANGED, self.fitSelected) - self.mainFrame.Bind(gui.shipBrowser.EVT_FIT_RENAMED, self.fitRenamed) - self.mainFrame.Bind(gui.shipBrowser.BOOSTER_LIST_UPDATED, self.RefreshBoosterFits) - - self.RefreshBoosterFits() - self.RefreshCharacterList() - - def buildBoostermenu(self): - menu = wx.Menu() - - for id, option in enumerate(self.options): - item = menu.Append(-1, option) - # We bind it to the mainFrame because it may be called from either this class or from FitItem via shipBrowser - self.mainFrame.Bind(wx.EVT_MENU, self.OnPopupItemSelected, item) - return menu - - def OnEnterWindow(self, event): - obj = event.GetEventObject() - obj.SetCursor(wx.StockCursor(wx.CURSOR_HAND)) - event.Skip() - - def OnLeaveWindow(self, event): - obj = event.GetEventObject() - obj.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) - event.Skip() - - def CharChanged(self, event): - ''' Change booster character ''' - chBooster = event.GetEventObject() - - type = -1 - for id in self.fleet: - if chBooster == self.fleet[id]['chChar']: type = id - - if type == -1: - event.Skip() - return - - sFit = service.Fit.getInstance() - - fleetSrv = service.Fleet.getInstance() - - activeFitID = self.mainFrame.getActiveFit() - fit = sFit.getFit(activeFitID) - - sChar = service.Character.getInstance() - charList = sChar.getCharacterList() - - if activeFitID: - commanders = fleetSrv.loadLinearFleet(fit) - if commanders is None: - fleetCom, wingCom, squadCom = (None, None, None) - else: - fleetCom, wingCom, squadCom = commanders - - if type == 0: - if fleetCom: - charID = chBooster.GetClientData(chBooster.GetSelection()) - sFit.changeChar(fleetCom.ID, charID) - else: - chBooster.SetSelection(0) - - if type == 1: - if wingCom: - charID = chBooster.GetClientData(chBooster.GetSelection()) - sFit.changeChar(wingCom.ID, charID) - else: - chBooster.SetSelection(0) - - if type == 2: - if squadCom: - charID = chBooster.GetClientData(chBooster.GetSelection()) - sFit.changeChar(squadCom.ID, charID) - else: - chBooster.SetSelection(0) - - sFit.recalc(fit, withBoosters=True) - wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID)) - - else: - chBooster.SetSelection(0) - - def RemoveBooster(self, event): - activeFitID = self.mainFrame.getActiveFit() - if not activeFitID: - return - - location = event.GetEventObject() - - for id in self.fleet: - if location == self.fleet[id]['stText']: type = id - - sFit = service.Fit.getInstance() - boostee = sFit.getFit(activeFitID) - booster = None - - fleetSrv = service.Fleet.getInstance() - - if type == 0: fleetSrv.setLinearFleetCom(boostee, booster) - if type == 1: fleetSrv.setLinearWingCom(boostee, booster) - if type == 2: fleetSrv.setLinearSquadCom(boostee, booster) - - # Hide stText and, default fit selection, and enable it - location.Hide() - choice = self.fleet[type]['chFit'] - choice.SetSelection(0) - choice.Show() - - sFit.recalc(boostee, withBoosters=True) - wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID)) - - def fitRenamed(self, event): - fleetSrv = service.Fleet.getInstance() - activeFitID = self.mainFrame.getActiveFit() - - if activeFitID: - ev = event - ev.fitID = activeFitID - self.fitSelected(ev) - - def fitSelected(self, event): - ''' Fires when active fit is selected and when booster is saved to fit. Update the UI to reflect changes ''' - fleetSrv = service.Fleet.getInstance() - - activeFitID = self.mainFrame.getActiveFit() - sFit = service.Fit.getInstance() - fit = sFit.getFit(event.fitID or activeFitID) - - self.Parent.Parent.DisablePage(self, not fit or fit.isStructure) - - commanders = (None, None, None) - - if activeFitID: - commanders = fleetSrv.loadLinearFleet(fit) - - for id in self.fleet: - # try...except here as we're trying 2 different criteria and want to fall back on the same code - try: - commander = commanders[id] - - if not activeFitID or commander is None: - raise Exception() - - self.fleet[id]['stText'].SetLabel(commander.ship.item.name + ": " + commander.name) - self.fleet[id]['chChar'].SetStringSelection(commander.character.name if commander.character is not None else "All 0") - self.fleet[id]['chChar'].Enable() - self.fleet[id]['chFit'].Hide() - self.fleet[id]['stText'].Show() - except: - #set defaults, disable char selection, and enable fit selection - self.fleet[id]['stText'].SetLabel("None") - self.fleet[id]['chChar'].SetStringSelection("All 0") - self.fleet[id]['chChar'].Disable() - self.fleet[id]['chFit'].SetSelection(0) - self.fleet[id]['chFit'].Show() - self.fleet[id]['stText'].Hide() - - if activeFitID: - self.Enable() - else: - self.Disable() - - self.Layout() - self.SendSizeEvent() - - def AddCommander(self, fitID, type = None): - ''' Adds booster to a fit, then recalculates active fit ''' - if type is None: - return - - activeFitID = self.mainFrame.getActiveFit() - if activeFitID: - sFit = service.Fit.getInstance() - - boostee = sFit.getFit(activeFitID) - booster = sFit.getFit(fitID) - - fleetSrv = service.Fleet.getInstance() - - if type == 0: fleetSrv.setLinearFleetCom(boostee, booster) - if type == 1: fleetSrv.setLinearWingCom(boostee, booster) - if type == 2: fleetSrv.setLinearSquadCom(boostee, booster) - - sFit.recalc(boostee) - wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID)) - - def RefreshBoosterFits(self, event = None): - sFit = service.Fit.getInstance() - sMkt = service.Market.getInstance() - fitList = sFit.getBoosterFits() - - for id in self.fleet: - choice = self.fleet[id]['chFit'] - chCurrSelection = choice.GetSelection() - chCurrData = -1 - if chCurrSelection != -1: - chCurrData = choice.GetClientData(chCurrSelection) - chCurrSelString = choice.GetString(chCurrSelection) - choice.Clear() - currSelFound = False - choice.Append("None", -1) - for fit in fitList: - id,name,type = fit - ship = sMkt.getItem(type) - choice.Append(ship.name+': '+name, id) - if chCurrData == id: - currSelFound = True - - if chCurrSelection == -1: - choice.SetSelection(0) - else: - if currSelFound: - choice.SetStringSelection(chCurrSelString) - else: - choice.SetSelection(0) - - def RefreshCharacterList(self, event = None): - sChar = service.Character.getInstance() - charList = sChar.getCharacterList() - for id in self.fleet: - choice = self.fleet[id]['chChar'] - chCurrSelection = choice.GetSelection() - chCurrData = -1 - if chCurrSelection != -1: - chCurrData = choice.GetClientData(chCurrSelection) - chCurrSelString = choice.GetString(chCurrSelection) - choice.Clear() - currSelFound = False - for char in charList: - choice.Append(char.name, char.ID) - if chCurrData == char.ID: - currSelFound = True - - if chCurrSelection == -1: - choice.SetSelection(1) - else: - if currSelFound: - choice.SetStringSelection(chCurrSelString) - else: - choice.SetSelection(1) - - def handleDrag(self, type, fitID): - ''' Handle dragging of fit to fleet interface ''' - #Those are drags coming from pyfa sources, NOT builtin wx drags - self.draggedFitID = None - if type == "fit": - sFit = service.Fit.getInstance() - fit = sFit.getFit(self.mainFrame.getActiveFit()) - - if fit and not fit.isStructure: - self.draggedFitID = fitID - - pos = wx.GetMousePosition() - pos = self.ScreenToClient(pos) - - self.PopupMenu(self.FitDNDPopupMenu, pos) - - - def OnPopupItemSelected(self, event): - ''' Fired when booster popup item is selected ''' - # Get menu selection ID via self.options - menuItem = event.EventObject.FindItemById(event.GetId()) - type = self.options.index(menuItem.GetText()) - - if self.draggedFitID: - sFit = service.Fit.getInstance() - draggedFit = sFit.getFit(self.draggedFitID) - - self.AddCommander(draggedFit.ID, type) - self.mainFrame.additionsPane.select("Fleet") - - def OnFitChoiceSelected(self, event): - ''' Fired when booster choice is selected ''' - sFit = service.Fit.getInstance() - - # set type via choice box used - chFit = event.GetEventObject() - fitID = chFit.GetClientData(chFit.GetSelection()) - - type = -1 - for id in self.fleet: - if chFit == self.fleet[id]['chFit']: type = id - - if type == -1 or fitID == -1: - event.Skip() - return - - fit = sFit.getFit(fitID) - - self.AddCommander(fit.ID, type) - self.mainFrame.additionsPane.select("Fleet") diff --git a/gui/mainFrame.py b/gui/mainFrame.py index 49fb9385a..4c2b350a5 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -55,7 +55,6 @@ from gui.preferenceDialog import PreferenceDialog from gui.graphFrame import GraphFrame from gui.copySelectDialog import CopySelectDialog from gui.utils.clipboard import toClipboard, fromClipboard -from gui.fleetBrowser import FleetBrowser from gui.updateDialog import UpdateDialog from gui.builtinViews import * @@ -158,12 +157,6 @@ class MainFrame(wx.Frame): self.shipBrowser = ShipBrowser(self.notebookBrowsers) self.notebookBrowsers.AddPage(self.shipBrowser, "Fittings", tabImage = shipBrowserImg, showClose = False) - #======================================================================= - # DISABLED FOR RC2 RELEASE - #self.fleetBrowser = FleetBrowser(self.notebookBrowsers) - #self.notebookBrowsers.AddPage(self.fleetBrowser, "Fleets", showClose = False) - #======================================================================= - self.notebookBrowsers.SetSelection(1) self.browser_fitting_split.SplitVertically(self.notebookBrowsers, self.fitting_additions_split) diff --git a/gui/shipBrowser.py b/gui/shipBrowser.py index e1271b616..96bfb7ad5 100644 --- a/gui/shipBrowser.py +++ b/gui/shipBrowser.py @@ -34,6 +34,7 @@ Stage3Selected, EVT_SB_STAGE3_SEL = wx.lib.newevent.NewEvent() SearchSelected, EVT_SB_SEARCH_SEL = wx.lib.newevent.NewEvent() ImportSelected, EVT_SB_IMPORT_SEL = wx.lib.newevent.NewEvent() + class PFWidgetsContainer(PFListPane): def __init__(self,parent): PFListPane.__init__(self,parent) @@ -685,7 +686,8 @@ class ShipBrowser(wx.Panel): # set map & cache of fittings per category for cat in self.categoryList: - self.categoryFitCache[cat.ID] = sFit.groupHasFits(cat.ID) + itemIDs = [x.ID for x in cat.items] + self.categoryFitCache[cat.ID] = sFit.countFitsWithShip(itemIDs) > 1 for ship in self.categoryList: if self.filterShipsWithNoFits and not self.categoryFitCache[ship.ID]: diff --git a/imgs/renders/11011.png b/imgs/renders/11011.png index f06af2bc0..43f603822 100644 Binary files a/imgs/renders/11011.png and b/imgs/renders/11011.png differ diff --git a/imgs/renders/11129.png b/imgs/renders/11129.png index 5d806f6d8..e61896246 100644 Binary files a/imgs/renders/11129.png and b/imgs/renders/11129.png differ diff --git a/imgs/renders/11132.png b/imgs/renders/11132.png index dbbb590d0..ddf54b1ee 100644 Binary files a/imgs/renders/11132.png and b/imgs/renders/11132.png differ diff --git a/imgs/renders/11134.png b/imgs/renders/11134.png index 110e928f0..bb8f8b418 100644 Binary files a/imgs/renders/11134.png and b/imgs/renders/11134.png differ diff --git a/imgs/renders/11172.png b/imgs/renders/11172.png index 7fcad62d7..5e5c2e88d 100644 Binary files a/imgs/renders/11172.png and b/imgs/renders/11172.png differ diff --git a/imgs/renders/11174.png b/imgs/renders/11174.png index b5b384431..d0ecdc900 100644 Binary files a/imgs/renders/11174.png and b/imgs/renders/11174.png differ diff --git a/imgs/renders/11176.png b/imgs/renders/11176.png index ebfdb7847..ef3e002e6 100644 Binary files a/imgs/renders/11176.png and b/imgs/renders/11176.png differ diff --git a/imgs/renders/11178.png b/imgs/renders/11178.png index 885699411..03bff6e3c 100644 Binary files a/imgs/renders/11178.png and b/imgs/renders/11178.png differ diff --git a/imgs/renders/11182.png b/imgs/renders/11182.png index 0c5a9aece..38685248e 100644 Binary files a/imgs/renders/11182.png and b/imgs/renders/11182.png differ diff --git a/imgs/renders/11184.png b/imgs/renders/11184.png index 47e30f0b4..6bed254be 100644 Binary files a/imgs/renders/11184.png and b/imgs/renders/11184.png differ diff --git a/imgs/renders/11186.png b/imgs/renders/11186.png index b5edebcd6..e8f75b15b 100644 Binary files a/imgs/renders/11186.png and b/imgs/renders/11186.png differ diff --git a/imgs/renders/11188.png b/imgs/renders/11188.png index 7a3a18ddb..92a56d3e0 100644 Binary files a/imgs/renders/11188.png and b/imgs/renders/11188.png differ diff --git a/imgs/renders/11190.png b/imgs/renders/11190.png index f0e5a1d3d..cdaf79494 100644 Binary files a/imgs/renders/11190.png and b/imgs/renders/11190.png differ diff --git a/imgs/renders/11192.png b/imgs/renders/11192.png index ba6fe7b0a..76174e5cc 100644 Binary files a/imgs/renders/11192.png and b/imgs/renders/11192.png differ diff --git a/imgs/renders/11194.png b/imgs/renders/11194.png index b7479ef2a..ee31b2b47 100644 Binary files a/imgs/renders/11194.png and b/imgs/renders/11194.png differ diff --git a/imgs/renders/11196.png b/imgs/renders/11196.png index b8c756a42..669de8269 100644 Binary files a/imgs/renders/11196.png and b/imgs/renders/11196.png differ diff --git a/imgs/renders/11198.png b/imgs/renders/11198.png index 63e283b92..731935b84 100644 Binary files a/imgs/renders/11198.png and b/imgs/renders/11198.png differ diff --git a/imgs/renders/11200.png b/imgs/renders/11200.png index 948b8c9eb..757a2107f 100644 Binary files a/imgs/renders/11200.png and b/imgs/renders/11200.png differ diff --git a/imgs/renders/11202.png b/imgs/renders/11202.png index 16a814da4..9f4f879ed 100644 Binary files a/imgs/renders/11202.png and b/imgs/renders/11202.png differ diff --git a/imgs/renders/11365.png b/imgs/renders/11365.png index ecfd8fedb..680d5a513 100644 Binary files a/imgs/renders/11365.png and b/imgs/renders/11365.png differ diff --git a/imgs/renders/11371.png b/imgs/renders/11371.png index 808afa13f..432961bcd 100644 Binary files a/imgs/renders/11371.png and b/imgs/renders/11371.png differ diff --git a/imgs/renders/11377.png b/imgs/renders/11377.png index 0e67c541f..ff3e2793d 100644 Binary files a/imgs/renders/11377.png and b/imgs/renders/11377.png differ diff --git a/imgs/renders/11379.png b/imgs/renders/11379.png index 6ea54281a..5a31c2abf 100644 Binary files a/imgs/renders/11379.png and b/imgs/renders/11379.png differ diff --git a/imgs/renders/11381.png b/imgs/renders/11381.png index 3a93fe679..964281297 100644 Binary files a/imgs/renders/11381.png and b/imgs/renders/11381.png differ diff --git a/imgs/renders/11387.png b/imgs/renders/11387.png index 2d773e8d1..086292471 100644 Binary files a/imgs/renders/11387.png and b/imgs/renders/11387.png differ diff --git a/imgs/renders/11393.png b/imgs/renders/11393.png index 4410b049b..3c7463e65 100644 Binary files a/imgs/renders/11393.png and b/imgs/renders/11393.png differ diff --git a/imgs/renders/11400.png b/imgs/renders/11400.png index 1f73f7915..c4b62b635 100644 Binary files a/imgs/renders/11400.png and b/imgs/renders/11400.png differ diff --git a/imgs/renders/11567.png b/imgs/renders/11567.png index 5614291c8..3afae72a4 100644 Binary files a/imgs/renders/11567.png and b/imgs/renders/11567.png differ diff --git a/imgs/renders/11936.png b/imgs/renders/11936.png index 2d3a6f15d..b9ddb0338 100644 Binary files a/imgs/renders/11936.png and b/imgs/renders/11936.png differ diff --git a/imgs/renders/11938.png b/imgs/renders/11938.png index 3d5053c58..bf209e75a 100644 Binary files a/imgs/renders/11938.png and b/imgs/renders/11938.png differ diff --git a/imgs/renders/11940.png b/imgs/renders/11940.png index 3977d308f..611f2ea7e 100644 Binary files a/imgs/renders/11940.png and b/imgs/renders/11940.png differ diff --git a/imgs/renders/11942.png b/imgs/renders/11942.png index 67646f1c8..4b25c3af1 100644 Binary files a/imgs/renders/11942.png and b/imgs/renders/11942.png differ diff --git a/imgs/renders/11957.png b/imgs/renders/11957.png index 72691f47a..20115952a 100644 Binary files a/imgs/renders/11957.png and b/imgs/renders/11957.png differ diff --git a/imgs/renders/11959.png b/imgs/renders/11959.png index f86b180b2..46d9d95ea 100644 Binary files a/imgs/renders/11959.png and b/imgs/renders/11959.png differ diff --git a/imgs/renders/11961.png b/imgs/renders/11961.png index 4693c02d5..79a87aa70 100644 Binary files a/imgs/renders/11961.png and b/imgs/renders/11961.png differ diff --git a/imgs/renders/11963.png b/imgs/renders/11963.png index 58358a622..efa20706b 100644 Binary files a/imgs/renders/11963.png and b/imgs/renders/11963.png differ diff --git a/imgs/renders/11965.png b/imgs/renders/11965.png index 054b51c29..1b719e5e7 100644 Binary files a/imgs/renders/11965.png and b/imgs/renders/11965.png differ diff --git a/imgs/renders/11969.png b/imgs/renders/11969.png index e814cd6a7..0e3ab23cc 100644 Binary files a/imgs/renders/11969.png and b/imgs/renders/11969.png differ diff --git a/imgs/renders/11971.png b/imgs/renders/11971.png index ec65c0811..f67c09933 100644 Binary files a/imgs/renders/11971.png and b/imgs/renders/11971.png differ diff --git a/imgs/renders/11978.png b/imgs/renders/11978.png index db538d2d3..c8b821365 100644 Binary files a/imgs/renders/11978.png and b/imgs/renders/11978.png differ diff --git a/imgs/renders/11985.png b/imgs/renders/11985.png index d3d39f705..4eee6f035 100644 Binary files a/imgs/renders/11985.png and b/imgs/renders/11985.png differ diff --git a/imgs/renders/11987.png b/imgs/renders/11987.png index 15b005e0c..82604748e 100644 Binary files a/imgs/renders/11987.png and b/imgs/renders/11987.png differ diff --git a/imgs/renders/11989.png b/imgs/renders/11989.png index 3cd8cbe9f..6b983eb2d 100644 Binary files a/imgs/renders/11989.png and b/imgs/renders/11989.png differ diff --git a/imgs/renders/11993.png b/imgs/renders/11993.png index 78c1725dc..77d765dd1 100644 Binary files a/imgs/renders/11993.png and b/imgs/renders/11993.png differ diff --git a/imgs/renders/11995.png b/imgs/renders/11995.png index 590376227..ff2f6fa30 100644 Binary files a/imgs/renders/11995.png and b/imgs/renders/11995.png differ diff --git a/imgs/renders/11999.png b/imgs/renders/11999.png index a78ffb2af..4dc9a2922 100644 Binary files a/imgs/renders/11999.png and b/imgs/renders/11999.png differ diff --git a/imgs/renders/12003.png b/imgs/renders/12003.png index 7c3bb7607..a9d1d13db 100644 Binary files a/imgs/renders/12003.png and b/imgs/renders/12003.png differ diff --git a/imgs/renders/12005.png b/imgs/renders/12005.png index 240f3b6e5..ee62f7a0e 100644 Binary files a/imgs/renders/12005.png and b/imgs/renders/12005.png differ diff --git a/imgs/renders/12011.png b/imgs/renders/12011.png index d527d76b0..a98fb65eb 100644 Binary files a/imgs/renders/12011.png and b/imgs/renders/12011.png differ diff --git a/imgs/renders/12013.png b/imgs/renders/12013.png index 9e9c045b7..6d35410fe 100644 Binary files a/imgs/renders/12013.png and b/imgs/renders/12013.png differ diff --git a/imgs/renders/12015.png b/imgs/renders/12015.png index 750507c58..e3d859413 100644 Binary files a/imgs/renders/12015.png and b/imgs/renders/12015.png differ diff --git a/imgs/renders/12017.png b/imgs/renders/12017.png index 83cdd325d..fd1375e90 100644 Binary files a/imgs/renders/12017.png and b/imgs/renders/12017.png differ diff --git a/imgs/renders/12019.png b/imgs/renders/12019.png index 88999980a..00e393ff8 100644 Binary files a/imgs/renders/12019.png and b/imgs/renders/12019.png differ diff --git a/imgs/renders/12021.png b/imgs/renders/12021.png index 16226248b..b72b6c3f2 100644 Binary files a/imgs/renders/12021.png and b/imgs/renders/12021.png differ diff --git a/imgs/renders/12023.png b/imgs/renders/12023.png index 94609e40e..ebeb8aaee 100644 Binary files a/imgs/renders/12023.png and b/imgs/renders/12023.png differ diff --git a/imgs/renders/12032.png b/imgs/renders/12032.png index 803479413..4bd038a26 100644 Binary files a/imgs/renders/12032.png and b/imgs/renders/12032.png differ diff --git a/imgs/renders/12034.png b/imgs/renders/12034.png index 337c98582..4a2a30d8b 100644 Binary files a/imgs/renders/12034.png and b/imgs/renders/12034.png differ diff --git a/imgs/renders/12038.png b/imgs/renders/12038.png index f59f71ab7..25933035a 100644 Binary files a/imgs/renders/12038.png and b/imgs/renders/12038.png differ diff --git a/imgs/renders/12042.png b/imgs/renders/12042.png index 182ef5db6..bf089ad01 100644 Binary files a/imgs/renders/12042.png and b/imgs/renders/12042.png differ diff --git a/imgs/renders/12044.png b/imgs/renders/12044.png index 786c704cc..728d23d47 100644 Binary files a/imgs/renders/12044.png and b/imgs/renders/12044.png differ diff --git a/imgs/renders/12729.png b/imgs/renders/12729.png index d0bb73e4c..a61153fbb 100644 Binary files a/imgs/renders/12729.png and b/imgs/renders/12729.png differ diff --git a/imgs/renders/12731.png b/imgs/renders/12731.png index 86b05f846..dff2c2cf5 100644 Binary files a/imgs/renders/12731.png and b/imgs/renders/12731.png differ diff --git a/imgs/renders/12733.png b/imgs/renders/12733.png index 354561c81..875263a31 100644 Binary files a/imgs/renders/12733.png and b/imgs/renders/12733.png differ diff --git a/imgs/renders/12735.png b/imgs/renders/12735.png index e25622c0d..431390131 100644 Binary files a/imgs/renders/12735.png and b/imgs/renders/12735.png differ diff --git a/imgs/renders/12743.png b/imgs/renders/12743.png index 0fa6e660d..a7d2d572f 100644 Binary files a/imgs/renders/12743.png and b/imgs/renders/12743.png differ diff --git a/imgs/renders/12745.png b/imgs/renders/12745.png index 8b1d60ec3..183c134eb 100644 Binary files a/imgs/renders/12745.png and b/imgs/renders/12745.png differ diff --git a/imgs/renders/12747.png b/imgs/renders/12747.png index 2ee85080d..47780e28d 100644 Binary files a/imgs/renders/12747.png and b/imgs/renders/12747.png differ diff --git a/imgs/renders/12753.png b/imgs/renders/12753.png index dc4c18726..1dbfe679b 100644 Binary files a/imgs/renders/12753.png and b/imgs/renders/12753.png differ diff --git a/imgs/renders/13202.png b/imgs/renders/13202.png index 9a0d9a67b..0cb36beca 100644 Binary files a/imgs/renders/13202.png and b/imgs/renders/13202.png differ diff --git a/imgs/renders/16227.png b/imgs/renders/16227.png index a39b7312b..4a8b68874 100644 Binary files a/imgs/renders/16227.png and b/imgs/renders/16227.png differ diff --git a/imgs/renders/16229.png b/imgs/renders/16229.png index caf3a7800..8f34313ab 100644 Binary files a/imgs/renders/16229.png and b/imgs/renders/16229.png differ diff --git a/imgs/renders/16231.png b/imgs/renders/16231.png index 70ea1152e..ec96c2524 100644 Binary files a/imgs/renders/16231.png and b/imgs/renders/16231.png differ diff --git a/imgs/renders/16233.png b/imgs/renders/16233.png index 78dbc73a4..0824197c1 100644 Binary files a/imgs/renders/16233.png and b/imgs/renders/16233.png differ diff --git a/imgs/renders/16236.png b/imgs/renders/16236.png index d0bf11478..e2dc3ef37 100644 Binary files a/imgs/renders/16236.png and b/imgs/renders/16236.png differ diff --git a/imgs/renders/16238.png b/imgs/renders/16238.png index 34797082c..885beef26 100644 Binary files a/imgs/renders/16238.png and b/imgs/renders/16238.png differ diff --git a/imgs/renders/16240.png b/imgs/renders/16240.png index b53b49c5a..61565d129 100644 Binary files a/imgs/renders/16240.png and b/imgs/renders/16240.png differ diff --git a/imgs/renders/16242.png b/imgs/renders/16242.png index 3cda42d3e..807c78a39 100644 Binary files a/imgs/renders/16242.png and b/imgs/renders/16242.png differ diff --git a/imgs/renders/17476.png b/imgs/renders/17476.png index 8c1870d99..f71ab37be 100644 Binary files a/imgs/renders/17476.png and b/imgs/renders/17476.png differ diff --git a/imgs/renders/17478.png b/imgs/renders/17478.png index 1372f94e8..92f20b6ea 100644 Binary files a/imgs/renders/17478.png and b/imgs/renders/17478.png differ diff --git a/imgs/renders/17480.png b/imgs/renders/17480.png index 8c1870d99..b5d38deb4 100644 Binary files a/imgs/renders/17480.png and b/imgs/renders/17480.png differ diff --git a/imgs/renders/17619.png b/imgs/renders/17619.png index 925a99787..a1cf3a992 100644 Binary files a/imgs/renders/17619.png and b/imgs/renders/17619.png differ diff --git a/imgs/renders/17634.png b/imgs/renders/17634.png index 650788e9d..175f41be8 100644 Binary files a/imgs/renders/17634.png and b/imgs/renders/17634.png differ diff --git a/imgs/renders/17636.png b/imgs/renders/17636.png index 3a77d621e..2ba2b65f8 100644 Binary files a/imgs/renders/17636.png and b/imgs/renders/17636.png differ diff --git a/imgs/renders/17703.png b/imgs/renders/17703.png index 791c84ab6..9713d4594 100644 Binary files a/imgs/renders/17703.png and b/imgs/renders/17703.png differ diff --git a/imgs/renders/17709.png b/imgs/renders/17709.png index adf3fa517..a863c5ca6 100644 Binary files a/imgs/renders/17709.png and b/imgs/renders/17709.png differ diff --git a/imgs/renders/17713.png b/imgs/renders/17713.png index d62de5f75..6997f8389 100644 Binary files a/imgs/renders/17713.png and b/imgs/renders/17713.png differ diff --git a/imgs/renders/17715.png b/imgs/renders/17715.png index f96bafccb..6892e2318 100644 Binary files a/imgs/renders/17715.png and b/imgs/renders/17715.png differ diff --git a/imgs/renders/17718.png b/imgs/renders/17718.png index e392f9b9d..3f4f8a7e3 100644 Binary files a/imgs/renders/17718.png and b/imgs/renders/17718.png differ diff --git a/imgs/renders/17720.png b/imgs/renders/17720.png index 8244169fc..6aa21b7d0 100644 Binary files a/imgs/renders/17720.png and b/imgs/renders/17720.png differ diff --git a/imgs/renders/17722.png b/imgs/renders/17722.png index 8216f728e..ef45cc709 100644 Binary files a/imgs/renders/17722.png and b/imgs/renders/17722.png differ diff --git a/imgs/renders/17726.png b/imgs/renders/17726.png index 4bc49a053..2cf4932c2 100644 Binary files a/imgs/renders/17726.png and b/imgs/renders/17726.png differ diff --git a/imgs/renders/17728.png b/imgs/renders/17728.png index 2cc1e4e91..3b0c49399 100644 Binary files a/imgs/renders/17728.png and b/imgs/renders/17728.png differ diff --git a/imgs/renders/17732.png b/imgs/renders/17732.png index d99ee43fa..dedc5483f 100644 Binary files a/imgs/renders/17732.png and b/imgs/renders/17732.png differ diff --git a/imgs/renders/17736.png b/imgs/renders/17736.png index 42fd995b1..5f022ee08 100644 Binary files a/imgs/renders/17736.png and b/imgs/renders/17736.png differ diff --git a/imgs/renders/17738.png b/imgs/renders/17738.png index f1692ae81..b0deb515c 100644 Binary files a/imgs/renders/17738.png and b/imgs/renders/17738.png differ diff --git a/imgs/renders/17740.png b/imgs/renders/17740.png index a9e133f68..2e88144b3 100644 Binary files a/imgs/renders/17740.png and b/imgs/renders/17740.png differ diff --git a/imgs/renders/17812.png b/imgs/renders/17812.png index e39279229..7cc6847cc 100644 Binary files a/imgs/renders/17812.png and b/imgs/renders/17812.png differ diff --git a/imgs/renders/17841.png b/imgs/renders/17841.png index 147d91be6..6e45c0c7e 100644 Binary files a/imgs/renders/17841.png and b/imgs/renders/17841.png differ diff --git a/imgs/renders/17843.png b/imgs/renders/17843.png index 7ea6c2e08..97912d02e 100644 Binary files a/imgs/renders/17843.png and b/imgs/renders/17843.png differ diff --git a/imgs/renders/17918.png b/imgs/renders/17918.png index 49dd2a777..ce7e07fdc 100644 Binary files a/imgs/renders/17918.png and b/imgs/renders/17918.png differ diff --git a/imgs/renders/17920.png b/imgs/renders/17920.png index 96afd32dd..979afd242 100644 Binary files a/imgs/renders/17920.png and b/imgs/renders/17920.png differ diff --git a/imgs/renders/17922.png b/imgs/renders/17922.png index 8ac736402..9019b8edc 100644 Binary files a/imgs/renders/17922.png and b/imgs/renders/17922.png differ diff --git a/imgs/renders/17924.png b/imgs/renders/17924.png index b968be28c..84e647803 100644 Binary files a/imgs/renders/17924.png and b/imgs/renders/17924.png differ diff --git a/imgs/renders/17926.png b/imgs/renders/17926.png index 00671e614..44a45b729 100644 Binary files a/imgs/renders/17926.png and b/imgs/renders/17926.png differ diff --git a/imgs/renders/17928.png b/imgs/renders/17928.png index 7dc83dece..b840c14ec 100644 Binary files a/imgs/renders/17928.png and b/imgs/renders/17928.png differ diff --git a/imgs/renders/17930.png b/imgs/renders/17930.png index 2e11978f1..0d8ad8fb7 100644 Binary files a/imgs/renders/17930.png and b/imgs/renders/17930.png differ diff --git a/imgs/renders/17932.png b/imgs/renders/17932.png index c9b4ab1fa..9d001d0c1 100644 Binary files a/imgs/renders/17932.png and b/imgs/renders/17932.png differ diff --git a/imgs/renders/1944.png b/imgs/renders/1944.png index ea8ec7385..36ff10ad4 100644 Binary files a/imgs/renders/1944.png and b/imgs/renders/1944.png differ diff --git a/imgs/renders/19720.png b/imgs/renders/19720.png index b9b23fe1d..0ffcdbab9 100644 Binary files a/imgs/renders/19720.png and b/imgs/renders/19720.png differ diff --git a/imgs/renders/19722.png b/imgs/renders/19722.png index 70d9fbf38..55d8cefd9 100644 Binary files a/imgs/renders/19722.png and b/imgs/renders/19722.png differ diff --git a/imgs/renders/19724.png b/imgs/renders/19724.png index 0993aab4e..de93acd6e 100644 Binary files a/imgs/renders/19724.png and b/imgs/renders/19724.png differ diff --git a/imgs/renders/19726.png b/imgs/renders/19726.png index 09256f365..01706208f 100644 Binary files a/imgs/renders/19726.png and b/imgs/renders/19726.png differ diff --git a/imgs/renders/19744.png b/imgs/renders/19744.png index be8f1d5e4..3dae640ae 100644 Binary files a/imgs/renders/19744.png and b/imgs/renders/19744.png differ diff --git a/imgs/renders/2006.png b/imgs/renders/2006.png index efc6ae203..b1377357b 100644 Binary files a/imgs/renders/2006.png and b/imgs/renders/2006.png differ diff --git a/imgs/renders/20125.png b/imgs/renders/20125.png index 85aae9fd2..554e6a17c 100644 Binary files a/imgs/renders/20125.png and b/imgs/renders/20125.png differ diff --git a/imgs/renders/20183.png b/imgs/renders/20183.png index b5a5ecd60..913c105c4 100644 Binary files a/imgs/renders/20183.png and b/imgs/renders/20183.png differ diff --git a/imgs/renders/20185.png b/imgs/renders/20185.png index ea08f81b3..542f79e67 100644 Binary files a/imgs/renders/20185.png and b/imgs/renders/20185.png differ diff --git a/imgs/renders/20187.png b/imgs/renders/20187.png index 1ce2ae8c6..c8633ab8c 100644 Binary files a/imgs/renders/20187.png and b/imgs/renders/20187.png differ diff --git a/imgs/renders/20189.png b/imgs/renders/20189.png index 83fe82398..3c7600a96 100644 Binary files a/imgs/renders/20189.png and b/imgs/renders/20189.png differ diff --git a/imgs/renders/2078.png b/imgs/renders/2078.png index bf291f116..9c589200d 100644 Binary files a/imgs/renders/2078.png and b/imgs/renders/2078.png differ diff --git a/imgs/renders/21097.png b/imgs/renders/21097.png index 045d7c40d..ba94fbcdb 100644 Binary files a/imgs/renders/21097.png and b/imgs/renders/21097.png differ diff --git a/imgs/renders/2161.png b/imgs/renders/2161.png index 23c14209f..3b7357aa5 100644 Binary files a/imgs/renders/2161.png and b/imgs/renders/2161.png differ diff --git a/imgs/renders/21628.png b/imgs/renders/21628.png index 4abd94cd8..e9f1afb63 100644 Binary files a/imgs/renders/21628.png and b/imgs/renders/21628.png differ diff --git a/imgs/renders/22428.png b/imgs/renders/22428.png index f48dc76ef..71aaf8f4e 100644 Binary files a/imgs/renders/22428.png and b/imgs/renders/22428.png differ diff --git a/imgs/renders/22430.png b/imgs/renders/22430.png index 99dad2b74..af78fde73 100644 Binary files a/imgs/renders/22430.png and b/imgs/renders/22430.png differ diff --git a/imgs/renders/22436.png b/imgs/renders/22436.png index 232103245..a66a042fc 100644 Binary files a/imgs/renders/22436.png and b/imgs/renders/22436.png differ diff --git a/imgs/renders/22440.png b/imgs/renders/22440.png index 6362066dc..89c553aa8 100644 Binary files a/imgs/renders/22440.png and b/imgs/renders/22440.png differ diff --git a/imgs/renders/22442.png b/imgs/renders/22442.png index f37bf11e5..6e04a38e5 100644 Binary files a/imgs/renders/22442.png and b/imgs/renders/22442.png differ diff --git a/imgs/renders/22444.png b/imgs/renders/22444.png index d88d36e2d..53e45c0b4 100644 Binary files a/imgs/renders/22444.png and b/imgs/renders/22444.png differ diff --git a/imgs/renders/22446.png b/imgs/renders/22446.png index c9db9c342..b024e7f66 100644 Binary files a/imgs/renders/22446.png and b/imgs/renders/22446.png differ diff --git a/imgs/renders/22448.png b/imgs/renders/22448.png index f9fab3945..3d1530008 100644 Binary files a/imgs/renders/22448.png and b/imgs/renders/22448.png differ diff --git a/imgs/renders/22452.png b/imgs/renders/22452.png index cc1ec918a..9424b7f8d 100644 Binary files a/imgs/renders/22452.png and b/imgs/renders/22452.png differ diff --git a/imgs/renders/22456.png b/imgs/renders/22456.png index fd1a23759..7142c8782 100644 Binary files a/imgs/renders/22456.png and b/imgs/renders/22456.png differ diff --git a/imgs/renders/22460.png b/imgs/renders/22460.png index 52d80bf82..92dbd2e99 100644 Binary files a/imgs/renders/22460.png and b/imgs/renders/22460.png differ diff --git a/imgs/renders/22464.png b/imgs/renders/22464.png index 5130902ce..3158871d7 100644 Binary files a/imgs/renders/22464.png and b/imgs/renders/22464.png differ diff --git a/imgs/renders/22466.png b/imgs/renders/22466.png index c13412662..7b9e14b5c 100644 Binary files a/imgs/renders/22466.png and b/imgs/renders/22466.png differ diff --git a/imgs/renders/22468.png b/imgs/renders/22468.png index 15c8a18fb..d27945674 100644 Binary files a/imgs/renders/22468.png and b/imgs/renders/22468.png differ diff --git a/imgs/renders/22470.png b/imgs/renders/22470.png index 199cd4b28..2500548ad 100644 Binary files a/imgs/renders/22470.png and b/imgs/renders/22470.png differ diff --git a/imgs/renders/22474.png b/imgs/renders/22474.png index d59f41cae..dabff8d17 100644 Binary files a/imgs/renders/22474.png and b/imgs/renders/22474.png differ diff --git a/imgs/renders/22544.png b/imgs/renders/22544.png index e74dd2e55..c7accef7b 100644 Binary files a/imgs/renders/22544.png and b/imgs/renders/22544.png differ diff --git a/imgs/renders/22546.png b/imgs/renders/22546.png index 4a4cc1ff3..63d5120a1 100644 Binary files a/imgs/renders/22546.png and b/imgs/renders/22546.png differ diff --git a/imgs/renders/22548.png b/imgs/renders/22548.png index 508d38619..a784a7952 100644 Binary files a/imgs/renders/22548.png and b/imgs/renders/22548.png differ diff --git a/imgs/renders/22852.png b/imgs/renders/22852.png index 8a7c5ae8a..49d66346d 100644 Binary files a/imgs/renders/22852.png and b/imgs/renders/22852.png differ diff --git a/imgs/renders/23757.png b/imgs/renders/23757.png index 81daf42ac..dd854d4df 100644 Binary files a/imgs/renders/23757.png and b/imgs/renders/23757.png differ diff --git a/imgs/renders/23773.png b/imgs/renders/23773.png index 98781c4cd..f318658bd 100644 Binary files a/imgs/renders/23773.png and b/imgs/renders/23773.png differ diff --git a/imgs/renders/23911.png b/imgs/renders/23911.png index 93c552732..8472b288c 100644 Binary files a/imgs/renders/23911.png and b/imgs/renders/23911.png differ diff --git a/imgs/renders/23913.png b/imgs/renders/23913.png index 8c1870d99..cfddcdc15 100644 Binary files a/imgs/renders/23913.png and b/imgs/renders/23913.png differ diff --git a/imgs/renders/23915.png b/imgs/renders/23915.png index 6d8c9c28f..5ae1caf44 100644 Binary files a/imgs/renders/23915.png and b/imgs/renders/23915.png differ diff --git a/imgs/renders/23917.png b/imgs/renders/23917.png index 8c1870d99..714794ae5 100644 Binary files a/imgs/renders/23917.png and b/imgs/renders/23917.png differ diff --git a/imgs/renders/23919.png b/imgs/renders/23919.png index fe85c64d0..74e61caab 100644 Binary files a/imgs/renders/23919.png and b/imgs/renders/23919.png differ diff --git a/imgs/renders/24483.png b/imgs/renders/24483.png index 9ef403630..007b6da8e 100644 Binary files a/imgs/renders/24483.png and b/imgs/renders/24483.png differ diff --git a/imgs/renders/24688.png b/imgs/renders/24688.png index 0fb277e2b..6376a4d6d 100644 Binary files a/imgs/renders/24688.png and b/imgs/renders/24688.png differ diff --git a/imgs/renders/24690.png b/imgs/renders/24690.png index 2609621ec..306a640d0 100644 Binary files a/imgs/renders/24690.png and b/imgs/renders/24690.png differ diff --git a/imgs/renders/24692.png b/imgs/renders/24692.png index 1f12d1ac3..d91b62cbb 100644 Binary files a/imgs/renders/24692.png and b/imgs/renders/24692.png differ diff --git a/imgs/renders/24694.png b/imgs/renders/24694.png index a9c6796f6..d8012a4c6 100644 Binary files a/imgs/renders/24694.png and b/imgs/renders/24694.png differ diff --git a/imgs/renders/24696.png b/imgs/renders/24696.png index 4098bc969..b01590821 100644 Binary files a/imgs/renders/24696.png and b/imgs/renders/24696.png differ diff --git a/imgs/renders/24698.png b/imgs/renders/24698.png index 06622930e..a8c4c5cc0 100644 Binary files a/imgs/renders/24698.png and b/imgs/renders/24698.png differ diff --git a/imgs/renders/24700.png b/imgs/renders/24700.png index ee96fe986..64a48a852 100644 Binary files a/imgs/renders/24700.png and b/imgs/renders/24700.png differ diff --git a/imgs/renders/24702.png b/imgs/renders/24702.png index a317e3009..1993c8469 100644 Binary files a/imgs/renders/24702.png and b/imgs/renders/24702.png differ diff --git a/imgs/renders/26840.png b/imgs/renders/26840.png index e83eb30c0..aecd27c78 100644 Binary files a/imgs/renders/26840.png and b/imgs/renders/26840.png differ diff --git a/imgs/renders/26842.png b/imgs/renders/26842.png index 420038e02..ae240f33e 100644 Binary files a/imgs/renders/26842.png and b/imgs/renders/26842.png differ diff --git a/imgs/renders/2834.png b/imgs/renders/2834.png index d958b02bf..b9dcb96e3 100644 Binary files a/imgs/renders/2834.png and b/imgs/renders/2834.png differ diff --git a/imgs/renders/28352.png b/imgs/renders/28352.png index 320480ece..b4991c240 100644 Binary files a/imgs/renders/28352.png and b/imgs/renders/28352.png differ diff --git a/imgs/renders/2836.png b/imgs/renders/2836.png index 8b5e152be..6a6f42330 100644 Binary files a/imgs/renders/2836.png and b/imgs/renders/2836.png differ diff --git a/imgs/renders/28606.png b/imgs/renders/28606.png index 49261d30d..585522404 100644 Binary files a/imgs/renders/28606.png and b/imgs/renders/28606.png differ diff --git a/imgs/renders/2863.png b/imgs/renders/2863.png index 841115e67..04ff60da0 100644 Binary files a/imgs/renders/2863.png and b/imgs/renders/2863.png differ diff --git a/imgs/renders/28659.png b/imgs/renders/28659.png index d8da60075..61f8fdf30 100644 Binary files a/imgs/renders/28659.png and b/imgs/renders/28659.png differ diff --git a/imgs/renders/28661.png b/imgs/renders/28661.png index f66d036ec..d5dc3e86f 100644 Binary files a/imgs/renders/28661.png and b/imgs/renders/28661.png differ diff --git a/imgs/renders/28665.png b/imgs/renders/28665.png index 4ad83c01a..ce1b9b0a3 100644 Binary files a/imgs/renders/28665.png and b/imgs/renders/28665.png differ diff --git a/imgs/renders/28710.png b/imgs/renders/28710.png index cc85b27e5..44e2fd2f2 100644 Binary files a/imgs/renders/28710.png and b/imgs/renders/28710.png differ diff --git a/imgs/renders/28844.png b/imgs/renders/28844.png index 2c14a0377..60df79006 100644 Binary files a/imgs/renders/28844.png and b/imgs/renders/28844.png differ diff --git a/imgs/renders/28846.png b/imgs/renders/28846.png index ae3048687..31898e2a3 100644 Binary files a/imgs/renders/28846.png and b/imgs/renders/28846.png differ diff --git a/imgs/renders/28848.png b/imgs/renders/28848.png index c5bfd6908..f50843aa5 100644 Binary files a/imgs/renders/28848.png and b/imgs/renders/28848.png differ diff --git a/imgs/renders/28850.png b/imgs/renders/28850.png index 3c81372a5..6bb510dce 100644 Binary files a/imgs/renders/28850.png and b/imgs/renders/28850.png differ diff --git a/imgs/renders/29248.png b/imgs/renders/29248.png index 675c552b2..64af89c39 100644 Binary files a/imgs/renders/29248.png and b/imgs/renders/29248.png differ diff --git a/imgs/renders/29266.png b/imgs/renders/29266.png index b50548e72..073a8955d 100644 Binary files a/imgs/renders/29266.png and b/imgs/renders/29266.png differ diff --git a/imgs/renders/29336.png b/imgs/renders/29336.png index 668346283..c80a4674a 100644 Binary files a/imgs/renders/29336.png and b/imgs/renders/29336.png differ diff --git a/imgs/renders/29337.png b/imgs/renders/29337.png index 11ae93d84..4c58953e7 100644 Binary files a/imgs/renders/29337.png and b/imgs/renders/29337.png differ diff --git a/imgs/renders/29340.png b/imgs/renders/29340.png index aa80b6e49..1879bf84e 100644 Binary files a/imgs/renders/29340.png and b/imgs/renders/29340.png differ diff --git a/imgs/renders/29344.png b/imgs/renders/29344.png index 39c89e457..b1cc30a56 100644 Binary files a/imgs/renders/29344.png and b/imgs/renders/29344.png differ diff --git a/imgs/renders/2998.png b/imgs/renders/2998.png index 71b9cb0bb..94630a292 100644 Binary files a/imgs/renders/2998.png and b/imgs/renders/2998.png differ diff --git a/imgs/renders/29984.png b/imgs/renders/29984.png index 8c07258fb..3a126e25f 100644 Binary files a/imgs/renders/29984.png and b/imgs/renders/29984.png differ diff --git a/imgs/renders/29986.png b/imgs/renders/29986.png index cc5eae891..5adfd68e1 100644 Binary files a/imgs/renders/29986.png and b/imgs/renders/29986.png differ diff --git a/imgs/renders/29988.png b/imgs/renders/29988.png index c879e5e91..5e31d6689 100644 Binary files a/imgs/renders/29988.png and b/imgs/renders/29988.png differ diff --git a/imgs/renders/29990.png b/imgs/renders/29990.png index a287214c1..529f59377 100644 Binary files a/imgs/renders/29990.png and b/imgs/renders/29990.png differ diff --git a/imgs/renders/30842.png b/imgs/renders/30842.png index 92305d8a3..2831b8c55 100644 Binary files a/imgs/renders/30842.png and b/imgs/renders/30842.png differ diff --git a/imgs/renders/32207.png b/imgs/renders/32207.png index 86f7bd7ee..240347bd4 100644 Binary files a/imgs/renders/32207.png and b/imgs/renders/32207.png differ diff --git a/imgs/renders/32209.png b/imgs/renders/32209.png index 1cbb87966..38d534a39 100644 Binary files a/imgs/renders/32209.png and b/imgs/renders/32209.png differ diff --git a/imgs/renders/32305.png b/imgs/renders/32305.png index 3eaf252b0..f6d5b9ef3 100644 Binary files a/imgs/renders/32305.png and b/imgs/renders/32305.png differ diff --git a/imgs/renders/32307.png b/imgs/renders/32307.png index ba808420e..e79bb5c52 100644 Binary files a/imgs/renders/32307.png and b/imgs/renders/32307.png differ diff --git a/imgs/renders/32309.png b/imgs/renders/32309.png index ce2bdfe1d..83443e7a6 100644 Binary files a/imgs/renders/32309.png and b/imgs/renders/32309.png differ diff --git a/imgs/renders/32311.png b/imgs/renders/32311.png index fa637d9d2..630fce427 100644 Binary files a/imgs/renders/32311.png and b/imgs/renders/32311.png differ diff --git a/imgs/renders/32788.png b/imgs/renders/32788.png index 09e2b7e79..2cdd23f36 100644 Binary files a/imgs/renders/32788.png and b/imgs/renders/32788.png differ diff --git a/imgs/renders/32790.png b/imgs/renders/32790.png index 2d940f8a4..b38da752c 100644 Binary files a/imgs/renders/32790.png and b/imgs/renders/32790.png differ diff --git a/imgs/renders/32811.png b/imgs/renders/32811.png index 38016f14c..56636bd3a 100644 Binary files a/imgs/renders/32811.png and b/imgs/renders/32811.png differ diff --git a/imgs/renders/32872.png b/imgs/renders/32872.png index 8c1870d99..cf6607d03 100644 Binary files a/imgs/renders/32872.png and b/imgs/renders/32872.png differ diff --git a/imgs/renders/32874.png b/imgs/renders/32874.png index 89e633445..6b7d449a4 100644 Binary files a/imgs/renders/32874.png and b/imgs/renders/32874.png differ diff --git a/imgs/renders/32876.png b/imgs/renders/32876.png index b414b5b03..572a7f3d7 100644 Binary files a/imgs/renders/32876.png and b/imgs/renders/32876.png differ diff --git a/imgs/renders/32878.png b/imgs/renders/32878.png index ac050dd80..4146be95e 100644 Binary files a/imgs/renders/32878.png and b/imgs/renders/32878.png differ diff --git a/imgs/renders/32880.png b/imgs/renders/32880.png index f2694269e..356d98c4f 100644 Binary files a/imgs/renders/32880.png and b/imgs/renders/32880.png differ diff --git a/imgs/renders/33079.png b/imgs/renders/33079.png index fa614090e..3db3be1a5 100644 Binary files a/imgs/renders/33079.png and b/imgs/renders/33079.png differ diff --git a/imgs/renders/33081.png b/imgs/renders/33081.png index f11567f62..bb3a03933 100644 Binary files a/imgs/renders/33081.png and b/imgs/renders/33081.png differ diff --git a/imgs/renders/33083.png b/imgs/renders/33083.png index a58a4b610..ccba8c16d 100644 Binary files a/imgs/renders/33083.png and b/imgs/renders/33083.png differ diff --git a/imgs/renders/33151.png b/imgs/renders/33151.png index b88e38c23..4f958d5b4 100644 Binary files a/imgs/renders/33151.png and b/imgs/renders/33151.png differ diff --git a/imgs/renders/33153.png b/imgs/renders/33153.png index a90a0b4d8..13f671270 100644 Binary files a/imgs/renders/33153.png and b/imgs/renders/33153.png differ diff --git a/imgs/renders/33155.png b/imgs/renders/33155.png index 01f175623..5947fd012 100644 Binary files a/imgs/renders/33155.png and b/imgs/renders/33155.png differ diff --git a/imgs/renders/33157.png b/imgs/renders/33157.png index 2a9ad655d..99a5aa38c 100644 Binary files a/imgs/renders/33157.png and b/imgs/renders/33157.png differ diff --git a/imgs/renders/33395.png b/imgs/renders/33395.png index 75416b9cd..c6bdb66aa 100644 Binary files a/imgs/renders/33395.png and b/imgs/renders/33395.png differ diff --git a/imgs/renders/33397.png b/imgs/renders/33397.png index a1edc2579..fb5fb512f 100644 Binary files a/imgs/renders/33397.png and b/imgs/renders/33397.png differ diff --git a/imgs/renders/33468.png b/imgs/renders/33468.png index e1364edcb..6606f2c69 100644 Binary files a/imgs/renders/33468.png and b/imgs/renders/33468.png differ diff --git a/imgs/renders/33470.png b/imgs/renders/33470.png index c36569fa2..9cca50559 100644 Binary files a/imgs/renders/33470.png and b/imgs/renders/33470.png differ diff --git a/imgs/renders/33472.png b/imgs/renders/33472.png index ad9c61064..351044eb5 100644 Binary files a/imgs/renders/33472.png and b/imgs/renders/33472.png differ diff --git a/imgs/renders/33513.png b/imgs/renders/33513.png index 4d55c2ef0..15e7c9a17 100644 Binary files a/imgs/renders/33513.png and b/imgs/renders/33513.png differ diff --git a/imgs/renders/33553.png b/imgs/renders/33553.png index 8ff490b4e..19d7dfa45 100644 Binary files a/imgs/renders/33553.png and b/imgs/renders/33553.png differ diff --git a/imgs/renders/34317.png b/imgs/renders/34317.png index ce992fc53..d3604598e 100644 Binary files a/imgs/renders/34317.png and b/imgs/renders/34317.png differ diff --git a/imgs/renders/34328.png b/imgs/renders/34328.png index 8746995de..9f4d50b8a 100644 Binary files a/imgs/renders/34328.png and b/imgs/renders/34328.png differ diff --git a/imgs/renders/34496.png b/imgs/renders/34496.png index 88beaef93..78a3c7eb2 100644 Binary files a/imgs/renders/34496.png and b/imgs/renders/34496.png differ diff --git a/imgs/renders/34562.png b/imgs/renders/34562.png index 38ae87157..03200d301 100644 Binary files a/imgs/renders/34562.png and b/imgs/renders/34562.png differ diff --git a/imgs/renders/34590.png b/imgs/renders/34590.png index 47404d937..0b80f3cd9 100644 Binary files a/imgs/renders/34590.png and b/imgs/renders/34590.png differ diff --git a/imgs/renders/34828.png b/imgs/renders/34828.png index c65874103..93ada7c87 100644 Binary files a/imgs/renders/34828.png and b/imgs/renders/34828.png differ diff --git a/imgs/renders/3514.png b/imgs/renders/3514.png index 1327dbb61..48e552bbd 100644 Binary files a/imgs/renders/3514.png and b/imgs/renders/3514.png differ diff --git a/imgs/renders/3516.png b/imgs/renders/3516.png index ac8d84524..29f9b1122 100644 Binary files a/imgs/renders/3516.png and b/imgs/renders/3516.png differ diff --git a/imgs/renders/3518.png b/imgs/renders/3518.png index f4c6eff72..a7aec2248 100644 Binary files a/imgs/renders/3518.png and b/imgs/renders/3518.png differ diff --git a/imgs/renders/3532.png b/imgs/renders/3532.png index 2f027fa8d..0ee7ed351 100644 Binary files a/imgs/renders/3532.png and b/imgs/renders/3532.png differ diff --git a/imgs/renders/35683.png b/imgs/renders/35683.png index 3d33bdef6..3413a046b 100644 Binary files a/imgs/renders/35683.png and b/imgs/renders/35683.png differ diff --git a/imgs/renders/35779.png b/imgs/renders/35779.png index 74e54bab7..d215ec668 100644 Binary files a/imgs/renders/35779.png and b/imgs/renders/35779.png differ diff --git a/imgs/renders/35781.png b/imgs/renders/35781.png index 46de1ce13..e7de9f9e6 100644 Binary files a/imgs/renders/35781.png and b/imgs/renders/35781.png differ diff --git a/imgs/renders/35832.png b/imgs/renders/35832.png index 8c1870d99..e4f3f70d8 100644 Binary files a/imgs/renders/35832.png and b/imgs/renders/35832.png differ diff --git a/imgs/renders/35833.png b/imgs/renders/35833.png index 8c1870d99..bc3743124 100644 Binary files a/imgs/renders/35833.png and b/imgs/renders/35833.png differ diff --git a/imgs/renders/35834.png b/imgs/renders/35834.png index 8c1870d99..9224ba047 100644 Binary files a/imgs/renders/35834.png and b/imgs/renders/35834.png differ diff --git a/imgs/renders/37135.png b/imgs/renders/37135.png index 06cf8cadb..9f596de10 100644 Binary files a/imgs/renders/37135.png and b/imgs/renders/37135.png differ diff --git a/imgs/renders/37453.png b/imgs/renders/37453.png index 65672fffa..575a418bb 100644 Binary files a/imgs/renders/37453.png and b/imgs/renders/37453.png differ diff --git a/imgs/renders/37454.png b/imgs/renders/37454.png index 56b36806c..31ac83e1f 100644 Binary files a/imgs/renders/37454.png and b/imgs/renders/37454.png differ diff --git a/imgs/renders/37455.png b/imgs/renders/37455.png index f94b859a9..b30b4b88e 100644 Binary files a/imgs/renders/37455.png and b/imgs/renders/37455.png differ diff --git a/imgs/renders/37456.png b/imgs/renders/37456.png index 0e1944f2d..0edfbec2b 100644 Binary files a/imgs/renders/37456.png and b/imgs/renders/37456.png differ diff --git a/imgs/renders/37457.png b/imgs/renders/37457.png index 18221492f..8f42b0bdf 100644 Binary files a/imgs/renders/37457.png and b/imgs/renders/37457.png differ diff --git a/imgs/renders/37458.png b/imgs/renders/37458.png index 87776bb7a..5a20a743c 100644 Binary files a/imgs/renders/37458.png and b/imgs/renders/37458.png differ diff --git a/imgs/renders/37459.png b/imgs/renders/37459.png index 87764ce0b..ff745cd26 100644 Binary files a/imgs/renders/37459.png and b/imgs/renders/37459.png differ diff --git a/imgs/renders/37460.png b/imgs/renders/37460.png index 01686384b..4ff569799 100644 Binary files a/imgs/renders/37460.png and b/imgs/renders/37460.png differ diff --git a/imgs/renders/37480.png b/imgs/renders/37480.png index 4d3b0a468..79ef03e0f 100644 Binary files a/imgs/renders/37480.png and b/imgs/renders/37480.png differ diff --git a/imgs/renders/37481.png b/imgs/renders/37481.png index cb6c0da21..9bc8184d7 100644 Binary files a/imgs/renders/37481.png and b/imgs/renders/37481.png differ diff --git a/imgs/renders/37482.png b/imgs/renders/37482.png index b0449f82a..609367af8 100644 Binary files a/imgs/renders/37482.png and b/imgs/renders/37482.png differ diff --git a/imgs/renders/37483.png b/imgs/renders/37483.png index 10cb96978..22347022d 100644 Binary files a/imgs/renders/37483.png and b/imgs/renders/37483.png differ diff --git a/imgs/renders/3756.png b/imgs/renders/3756.png index e70f0e2ad..d1c1d6d09 100644 Binary files a/imgs/renders/3756.png and b/imgs/renders/3756.png differ diff --git a/imgs/renders/37604.png b/imgs/renders/37604.png index 64ce78737..8c2eb4343 100644 Binary files a/imgs/renders/37604.png and b/imgs/renders/37604.png differ diff --git a/imgs/renders/37605.png b/imgs/renders/37605.png index 7457c96eb..07c1eb99f 100644 Binary files a/imgs/renders/37605.png and b/imgs/renders/37605.png differ diff --git a/imgs/renders/37606.png b/imgs/renders/37606.png index d030537fc..317a37c20 100644 Binary files a/imgs/renders/37606.png and b/imgs/renders/37606.png differ diff --git a/imgs/renders/37607.png b/imgs/renders/37607.png index b90307186..1cd489c7e 100644 Binary files a/imgs/renders/37607.png and b/imgs/renders/37607.png differ diff --git a/imgs/renders/3764.png b/imgs/renders/3764.png index efc8cc574..8d25f7825 100644 Binary files a/imgs/renders/3764.png and b/imgs/renders/3764.png differ diff --git a/imgs/renders/3766.png b/imgs/renders/3766.png index 59bc03f95..b6e27f7c1 100644 Binary files a/imgs/renders/3766.png and b/imgs/renders/3766.png differ diff --git a/imgs/renders/40340.png b/imgs/renders/40340.png index a2d216f78..38e9179ac 100644 Binary files a/imgs/renders/40340.png and b/imgs/renders/40340.png differ diff --git a/imgs/renders/4302.png b/imgs/renders/4302.png index 9f2d928cc..459b0416d 100644 Binary files a/imgs/renders/4302.png and b/imgs/renders/4302.png differ diff --git a/imgs/renders/4306.png b/imgs/renders/4306.png index 5bcff9dde..0cb7a46f6 100644 Binary files a/imgs/renders/4306.png and b/imgs/renders/4306.png differ diff --git a/imgs/renders/4308.png b/imgs/renders/4308.png index bce098f5c..a04127fab 100644 Binary files a/imgs/renders/4308.png and b/imgs/renders/4308.png differ diff --git a/imgs/renders/4310.png b/imgs/renders/4310.png index 1ae9123dd..508140910 100644 Binary files a/imgs/renders/4310.png and b/imgs/renders/4310.png differ diff --git a/imgs/renders/4363.png b/imgs/renders/4363.png index 42fb023dc..b0910f4ad 100644 Binary files a/imgs/renders/4363.png and b/imgs/renders/4363.png differ diff --git a/imgs/renders/4388.png b/imgs/renders/4388.png index eb92364da..8048a6c2c 100644 Binary files a/imgs/renders/4388.png and b/imgs/renders/4388.png differ diff --git a/imgs/renders/582.png b/imgs/renders/582.png index b7804c395..37718ce83 100644 Binary files a/imgs/renders/582.png and b/imgs/renders/582.png differ diff --git a/imgs/renders/583.png b/imgs/renders/583.png index 08d143f36..bd98cd510 100644 Binary files a/imgs/renders/583.png and b/imgs/renders/583.png differ diff --git a/imgs/renders/584.png b/imgs/renders/584.png index d52ddef01..9f1f224ff 100644 Binary files a/imgs/renders/584.png and b/imgs/renders/584.png differ diff --git a/imgs/renders/585.png b/imgs/renders/585.png index 3e9fc03fb..f0777c6e3 100644 Binary files a/imgs/renders/585.png and b/imgs/renders/585.png differ diff --git a/imgs/renders/586.png b/imgs/renders/586.png index e8ff5c0e7..eeddfa3ec 100644 Binary files a/imgs/renders/586.png and b/imgs/renders/586.png differ diff --git a/imgs/renders/587.png b/imgs/renders/587.png index f73484022..fe4c5a653 100644 Binary files a/imgs/renders/587.png and b/imgs/renders/587.png differ diff --git a/imgs/renders/588.png b/imgs/renders/588.png index 03612305d..cd1188159 100644 Binary files a/imgs/renders/588.png and b/imgs/renders/588.png differ diff --git a/imgs/renders/589.png b/imgs/renders/589.png index fd4777793..40d8f113b 100644 Binary files a/imgs/renders/589.png and b/imgs/renders/589.png differ diff --git a/imgs/renders/590.png b/imgs/renders/590.png index d0fbc1b6c..4ecf4d3c6 100644 Binary files a/imgs/renders/590.png and b/imgs/renders/590.png differ diff --git a/imgs/renders/591.png b/imgs/renders/591.png index 87e76d304..96bce75fd 100644 Binary files a/imgs/renders/591.png and b/imgs/renders/591.png differ diff --git a/imgs/renders/592.png b/imgs/renders/592.png index 9b9c541ad..4b8fc8d6e 100644 Binary files a/imgs/renders/592.png and b/imgs/renders/592.png differ diff --git a/imgs/renders/593.png b/imgs/renders/593.png index b5e61eae2..120800038 100644 Binary files a/imgs/renders/593.png and b/imgs/renders/593.png differ diff --git a/imgs/renders/594.png b/imgs/renders/594.png index 76d1c2974..c6ec27e1a 100644 Binary files a/imgs/renders/594.png and b/imgs/renders/594.png differ diff --git a/imgs/renders/596.png b/imgs/renders/596.png index 625d28c88..e019d41ae 100644 Binary files a/imgs/renders/596.png and b/imgs/renders/596.png differ diff --git a/imgs/renders/597.png b/imgs/renders/597.png index d6012611b..814f4f9ae 100644 Binary files a/imgs/renders/597.png and b/imgs/renders/597.png differ diff --git a/imgs/renders/598.png b/imgs/renders/598.png index fc6cb430e..4670cf972 100644 Binary files a/imgs/renders/598.png and b/imgs/renders/598.png differ diff --git a/imgs/renders/599.png b/imgs/renders/599.png index 0873dd430..762d0d45e 100644 Binary files a/imgs/renders/599.png and b/imgs/renders/599.png differ diff --git a/imgs/renders/601.png b/imgs/renders/601.png index ff4c60156..d6ed875d1 100644 Binary files a/imgs/renders/601.png and b/imgs/renders/601.png differ diff --git a/imgs/renders/602.png b/imgs/renders/602.png index 215a8c459..300349a18 100644 Binary files a/imgs/renders/602.png and b/imgs/renders/602.png differ diff --git a/imgs/renders/603.png b/imgs/renders/603.png index 48bc16678..89a3eab15 100644 Binary files a/imgs/renders/603.png and b/imgs/renders/603.png differ diff --git a/imgs/renders/605.png b/imgs/renders/605.png index c9df00411..a295915ed 100644 Binary files a/imgs/renders/605.png and b/imgs/renders/605.png differ diff --git a/imgs/renders/606.png b/imgs/renders/606.png index e0cd15bd5..30c516529 100644 Binary files a/imgs/renders/606.png and b/imgs/renders/606.png differ diff --git a/imgs/renders/607.png b/imgs/renders/607.png index a685e8e4c..2cfec3475 100644 Binary files a/imgs/renders/607.png and b/imgs/renders/607.png differ diff --git a/imgs/renders/608.png b/imgs/renders/608.png index 3bc57482a..9988b684b 100644 Binary files a/imgs/renders/608.png and b/imgs/renders/608.png differ diff --git a/imgs/renders/609.png b/imgs/renders/609.png index 52e276211..d205f36a8 100644 Binary files a/imgs/renders/609.png and b/imgs/renders/609.png differ diff --git a/imgs/renders/615.png b/imgs/renders/615.png index 8ea613732..04d848864 100644 Binary files a/imgs/renders/615.png and b/imgs/renders/615.png differ diff --git a/imgs/renders/617.png b/imgs/renders/617.png index b138c7868..3c5475318 100644 Binary files a/imgs/renders/617.png and b/imgs/renders/617.png differ diff --git a/imgs/renders/620.png b/imgs/renders/620.png index 1332a2942..1d6a29d5c 100644 Binary files a/imgs/renders/620.png and b/imgs/renders/620.png differ diff --git a/imgs/renders/621.png b/imgs/renders/621.png index 04d7b9758..f34d75c64 100644 Binary files a/imgs/renders/621.png and b/imgs/renders/621.png differ diff --git a/imgs/renders/622.png b/imgs/renders/622.png index ba26a299e..2f7a8b546 100644 Binary files a/imgs/renders/622.png and b/imgs/renders/622.png differ diff --git a/imgs/renders/623.png b/imgs/renders/623.png index 009f9b94b..037243c7a 100644 Binary files a/imgs/renders/623.png and b/imgs/renders/623.png differ diff --git a/imgs/renders/624.png b/imgs/renders/624.png index 7d5a99adb..faf472cb3 100644 Binary files a/imgs/renders/624.png and b/imgs/renders/624.png differ diff --git a/imgs/renders/625.png b/imgs/renders/625.png index 158d55f59..0444d5140 100644 Binary files a/imgs/renders/625.png and b/imgs/renders/625.png differ diff --git a/imgs/renders/626.png b/imgs/renders/626.png index e7b9e7f24..e0b4ea0d9 100644 Binary files a/imgs/renders/626.png and b/imgs/renders/626.png differ diff --git a/imgs/renders/627.png b/imgs/renders/627.png index 7b3c37ecc..47c5db4c0 100644 Binary files a/imgs/renders/627.png and b/imgs/renders/627.png differ diff --git a/imgs/renders/628.png b/imgs/renders/628.png index ad6b9fde4..c8e48ce8d 100644 Binary files a/imgs/renders/628.png and b/imgs/renders/628.png differ diff --git a/imgs/renders/629.png b/imgs/renders/629.png index 1f53cc92c..6b083c386 100644 Binary files a/imgs/renders/629.png and b/imgs/renders/629.png differ diff --git a/imgs/renders/630.png b/imgs/renders/630.png index 95dcd997c..da49c4b98 100644 Binary files a/imgs/renders/630.png and b/imgs/renders/630.png differ diff --git a/imgs/renders/631.png b/imgs/renders/631.png index d85d31bc5..d929843ab 100644 Binary files a/imgs/renders/631.png and b/imgs/renders/631.png differ diff --git a/imgs/renders/632.png b/imgs/renders/632.png index bf996be87..f1f9e40b9 100644 Binary files a/imgs/renders/632.png and b/imgs/renders/632.png differ diff --git a/imgs/renders/633.png b/imgs/renders/633.png index 3983348a5..b676099e9 100644 Binary files a/imgs/renders/633.png and b/imgs/renders/633.png differ diff --git a/imgs/renders/634.png b/imgs/renders/634.png index 095c5596b..17ec75849 100644 Binary files a/imgs/renders/634.png and b/imgs/renders/634.png differ diff --git a/imgs/renders/635.png b/imgs/renders/635.png index 6ff3f243c..2e4f95913 100644 Binary files a/imgs/renders/635.png and b/imgs/renders/635.png differ diff --git a/imgs/renders/638.png b/imgs/renders/638.png index 478d6e69a..9757f61ad 100644 Binary files a/imgs/renders/638.png and b/imgs/renders/638.png differ diff --git a/imgs/renders/639.png b/imgs/renders/639.png index 377c2a3d9..b405e5499 100644 Binary files a/imgs/renders/639.png and b/imgs/renders/639.png differ diff --git a/imgs/renders/640.png b/imgs/renders/640.png index a7b6b7885..efe0f8d1a 100644 Binary files a/imgs/renders/640.png and b/imgs/renders/640.png differ diff --git a/imgs/renders/641.png b/imgs/renders/641.png index 012412831..fa5a41154 100644 Binary files a/imgs/renders/641.png and b/imgs/renders/641.png differ diff --git a/imgs/renders/642.png b/imgs/renders/642.png index 13f5f432a..6432e5015 100644 Binary files a/imgs/renders/642.png and b/imgs/renders/642.png differ diff --git a/imgs/renders/643.png b/imgs/renders/643.png index c120359dc..b7352dce8 100644 Binary files a/imgs/renders/643.png and b/imgs/renders/643.png differ diff --git a/imgs/renders/644.png b/imgs/renders/644.png index 599cd69d4..67900f05e 100644 Binary files a/imgs/renders/644.png and b/imgs/renders/644.png differ diff --git a/imgs/renders/645.png b/imgs/renders/645.png index c54dd1c5d..7e4b64e11 100644 Binary files a/imgs/renders/645.png and b/imgs/renders/645.png differ diff --git a/imgs/renders/648.png b/imgs/renders/648.png index 2848df104..08fcac2d8 100644 Binary files a/imgs/renders/648.png and b/imgs/renders/648.png differ diff --git a/imgs/renders/649.png b/imgs/renders/649.png index 80c25d4d3..b11ed729c 100644 Binary files a/imgs/renders/649.png and b/imgs/renders/649.png differ diff --git a/imgs/renders/650.png b/imgs/renders/650.png index 5793c570f..107b29d05 100644 Binary files a/imgs/renders/650.png and b/imgs/renders/650.png differ diff --git a/imgs/renders/651.png b/imgs/renders/651.png index 9115483fd..af4452aa6 100644 Binary files a/imgs/renders/651.png and b/imgs/renders/651.png differ diff --git a/imgs/renders/652.png b/imgs/renders/652.png index 1b4fb8d04..628ac7416 100644 Binary files a/imgs/renders/652.png and b/imgs/renders/652.png differ diff --git a/imgs/renders/653.png b/imgs/renders/653.png index fb8c16652..83036c295 100644 Binary files a/imgs/renders/653.png and b/imgs/renders/653.png differ diff --git a/imgs/renders/654.png b/imgs/renders/654.png index bf9beed2c..cdd583909 100644 Binary files a/imgs/renders/654.png and b/imgs/renders/654.png differ diff --git a/imgs/renders/655.png b/imgs/renders/655.png index e91e7b50e..2e22d069f 100644 Binary files a/imgs/renders/655.png and b/imgs/renders/655.png differ diff --git a/imgs/renders/656.png b/imgs/renders/656.png index a913e54da..4b26ae600 100644 Binary files a/imgs/renders/656.png and b/imgs/renders/656.png differ diff --git a/imgs/renders/657.png b/imgs/renders/657.png index d7224815a..3d13e0e23 100644 Binary files a/imgs/renders/657.png and b/imgs/renders/657.png differ diff --git a/imgs/renders/671.png b/imgs/renders/671.png index aa2757e78..23db1e7aa 100644 Binary files a/imgs/renders/671.png and b/imgs/renders/671.png differ diff --git a/imgs/renders/672.png b/imgs/renders/672.png index 045d7c40d..ba94fbcdb 100644 Binary files a/imgs/renders/672.png and b/imgs/renders/672.png differ diff --git a/implants.py b/implants.py deleted file mode 100644 index b3c16cb94..000000000 --- a/implants.py +++ /dev/null @@ -1,13 +0,0 @@ -baseBonii = [0.01, 0.02, 0.03, 0.04, 0.05] # 0.01 = 1% -setMulti = [1.15, 1.15, 1.15, 1.15, 1.15, 1.5] # 1.15x = 15% bonus, these should be per attribute (?) - -# First, calculate total set multiplier by multiplying all set multipliers -setTotal = reduce(lambda x, y: x*y, setMulti) # gets something to multply base bonus -print "bonus multipler from set: ", setTotal -# Then, apply that multiplier to each base bonus to get the effective bonus -effectiveBonii = map(lambda x: (x*setTotal)+1, baseBonii) # +1 to make these modifiers -print "effective bonii: ", effectiveBonii -# Lastly, reduce all the effective bonii to a single total bonus by multiplying them all together (per attribute) -total = reduce(lambda x, y: x*y, effectiveBonii) - -print total \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..f8e777507 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +matplotlib +PyYAML +python-dateutil +urllib3 +requests==2.11.1 +sqlalchemy diff --git a/requirements_test.txt b/requirements_test.txt new file mode 100644 index 000000000..1bbef8b92 --- /dev/null +++ b/requirements_test.txt @@ -0,0 +1,7 @@ +pytest==3.0.3 +pytest-mock==1.2 +pytest-cov==2.3.1 +pytest-capturelog==0.7 +coverage==4.2 +coveralls==1.1 +codecov diff --git a/iconIDs.yaml b/scripts/iconIDs.yaml similarity index 93% rename from iconIDs.yaml rename to scripts/iconIDs.yaml index c4188ae98..7e1d13976 100644 --- a/iconIDs.yaml +++ b/scripts/iconIDs.yaml @@ -6562,3 +6562,330 @@ 21622: description: Icon for Gold Ouroboros iconFile: res:/UI/Texture/Icons/Inventory/serpentisContainerGold_64.png +21624: + description: 42698_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GuristasF01B.png + iconFile: res:/UI/Asset/mannequin/hair/42698_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GuristasF01B.png +21626: + description: 42699_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GuristasM01B.png + iconFile: res:/UI/Asset/mannequin/hair/42699_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GuristasM01B.png +21627: + description: 42708_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_BloodraidersM01.png + iconFile: res:/UI/Asset/mannequin/hair/42708_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_BloodraidersM01.png +21628: + description: 42709_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GallenteF01.png + iconFile: res:/UI/Asset/mannequin/hair/42709_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GallenteF01.png +21629: + description: 42710_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Gallente.png + iconFile: res:/UI/Asset/mannequin/hair/42710_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Gallente.png +21630: + description: 42711_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Green.png + iconFile: res:/UI/Asset/mannequin/hair/42711_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Green.png +21631: + description: 42712_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_MinmatarM01.png + iconFile: res:/UI/Asset/mannequin/hair/42712_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_MinmatarM01.png +21632: + description: 42713_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Orange.png + iconFile: res:/UI/Asset/mannequin/hair/42713_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Orange.png +21633: + description: 42714_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_WhiteBlack.png + iconFile: res:/UI/Asset/mannequin/hair/42714_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_WhiteBlack.png +21634: + description: 42715_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Minmatar.png + iconFile: res:/UI/Asset/mannequin/hair/42715_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Minmatar.png +21635: + description: 42716_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_WhiteBlack.png + iconFile: res:/UI/Asset/mannequin/hair/42716_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_WhiteBlack.png +21636: + description: 42717_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GuristasF01.png + iconFile: res:/UI/Asset/mannequin/hair/42717_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GuristasF01.png +21637: + description: 42718_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Blood.png + iconFile: res:/UI/Asset/mannequin/hair/42718_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Blood.png +21638: + description: 42719_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Concord.png + iconFile: res:/UI/Asset/mannequin/hair/42719_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Concord.png +21640: + description: 42720_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Caldari.png + iconFile: res:/UI/Asset/mannequin/hair/42720_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Caldari.png +21641: + description: 42721_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GuristasM01.png + iconFile: res:/UI/Asset/mannequin/hair/42721_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GuristasM01.png +21642: + description: 42722_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Guristas.png + iconFile: res:/UI/Asset/mannequin/hair/42722_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Guristas.png +21643: + description: 42723_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Black.png + iconFile: res:/UI/Asset/mannequin/hair/42723_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Black.png +21644: + description: 42724_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_ConcordM01.png + iconFile: res:/UI/Asset/mannequin/hair/42724_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_ConcordM01.png +21645: + description: 42725_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Amarr.png + iconFile: res:/UI/Asset/mannequin/hair/42725_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Amarr.png +21646: + description: 42726_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Blood.png + iconFile: res:/UI/Asset/mannequin/hair/42726_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Blood.png +21647: + description: 42727_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Green.png + iconFile: res:/UI/Asset/mannequin/hair/42727_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Green.png +21648: + description: 42728_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Amarr.png + iconFile: res:/UI/Asset/mannequin/hair/42728_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Amarr.png +21649: + description: 42729_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Camo.png + iconFile: res:/UI/Asset/mannequin/hair/42729_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Camo.png +21650: + description: 42730_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Minmatar.png + iconFile: res:/UI/Asset/mannequin/hair/42730_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Minmatar.png +21651: + description: 42731_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Caldari.png + iconFile: res:/UI/Asset/mannequin/hair/42731_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Caldari.png +21652: + description: 42732_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Camo.png + iconFile: res:/UI/Asset/mannequin/hair/42732_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Camo.png +21654: + description: 42733_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_BloodraidersF01.png + iconFile: res:/UI/Asset/mannequin/hair/42733_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_BloodraidersF01.png +21655: + description: 42734_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Black.png + iconFile: res:/UI/Asset/mannequin/hair/42734_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Black.png +21656: + description: 42735_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Orange.png + iconFile: res:/UI/Asset/mannequin/hair/42735_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Orange.png +21657: + description: 42736_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_CaldariM01.png + iconFile: res:/UI/Asset/mannequin/hair/42736_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_CaldariM01.png +21658: + description: 42737_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_ConcordF01.png + iconFile: res:/UI/Asset/mannequin/hair/42737_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_ConcordF01.png +21659: + description: 42738_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_MinmatarF01.png + iconFile: res:/UI/Asset/mannequin/hair/42738_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_MinmatarF01.png +21660: + description: 42739_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GallenteM01.png + iconFile: res:/UI/Asset/mannequin/hair/42739_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GallenteM01.png +21661: + description: 42740_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_CaldariF01.png + iconFile: res:/UI/Asset/mannequin/hair/42740_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_CaldariF01.png +21662: + description: 42741_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_AmarrM01.png + iconFile: res:/UI/Asset/mannequin/hair/42741_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_AmarrM01.png +21663: + description: 42742_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Concord.png + iconFile: res:/UI/Asset/mannequin/hair/42742_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Concord.png +21664: + description: 42743_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Guristas.png + iconFile: res:/UI/Asset/mannequin/hair/42743_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Guristas.png +21665: + description: 42744_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_AmarrF01.png + iconFile: res:/UI/Asset/mannequin/hair/42744_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_AmarrF01.png +21666: + description: 42745_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Gallente.png + iconFile: res:/UI/Asset/mannequin/hair/42745_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Gallente.png +21667: + description: 42707_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_bloodraiders.png + iconFile: res:/UI/Asset/mannequin/topouter/42707_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_bloodraiders.png +21668: + description: 42700_female_TopMiddle_ShirtQF01_Types_ShirtBloodraidersF01.png + iconFile: res:/UI/Asset/mannequin/topmiddle/42700_female_TopMiddle_ShirtQF01_Types_ShirtBloodraidersF01.png +21669: + description: 42704_male_topMiddle_ShirtQM01_Types_ShirtBloodraidersM01.png + iconFile: res:/UI/Asset/mannequin/topmiddle/42704_male_topMiddle_ShirtQM01_Types_ShirtBloodraidersM01.png +21670: + description: 42702_male_outer_JacketMFBR01_Types_JacketMFBR02_Bloodraiders.png + iconFile: res:/UI/Asset/mannequin/outer/42702_male_outer_JacketMFBR01_Types_JacketMFBR02_Bloodraiders.png +21671: + description: 42703_female_Outer_JacketFBR01_Types_JacketFBR02_bloodraiders.png + iconFile: res:/UI/Asset/mannequin/outer/42703_female_Outer_JacketFBR01_Types_JacketFBR02_bloodraiders.png +21672: + description: 42705_male_outer_JacketPrtm01_Types_JacketPrtm01_bloodraiders_spec.png + iconFile: res:/UI/Asset/mannequin/outer/42705_male_outer_JacketPrtm01_Types_JacketPrtm01_bloodraiders_spec.png +21673: + description: 42706_female_Outer_JacketPrtF01_Types_JacketPrtF01_bloodraiders_spec.png + iconFile: res:/UI/Asset/mannequin/outer/42706_female_Outer_JacketPrtF01_Types_JacketPrtF01_bloodraiders_spec.png +21674: + description: 42701_female_bottomOuter_PantsMilF01_Types_PantsMilF01_bloodraiders.png + iconFile: res:/UI/Asset/mannequin/bottomouter/42701_female_bottomOuter_PantsMilF01_Types_PantsMilF01_bloodraiders.png +21675: + description: Module - Command Burst Info + iconFile: res:/ui/texture/icons/cmd_brst_info_ph.png +21676: + description: Module - Command Burst Skirmish + iconFile: res:/ui/texture/icons/cmd_brst_skrmsh_ph.png +21677: + description: Module - Command Burst Mining Foreman + iconFile: res:/ui/texture/icons/cmd_brst_mine_ph.png +21678: + description: Module - Command Burst Armor + iconFile: res:/ui/texture/icons/cmd_brst_armor_ph.png +21679: + description: Module - Command Burst Shield + iconFile: res:/ui/texture/icons/cmd_brst_shield_ph.png +21680: + description: 42905_female_Accessories_Glasses_Goggles_01_Types_goggles_01_orange + iconFile: res:/UI/Asset/mannequin/accessories_glasses/42905_female_Accessories_Glasses_Goggles_01_Types_goggles_01_orange.png +21681: + description: 42906_male_Accessories_Glasses_Goggles_01_Types_goggles_01_orange + iconFile: res:/UI/Asset/mannequin/accessories_glasses/42906_male_Accessories_Glasses_Goggles_01_Types_goggles_01_orange.png +21683: + description: Avatar Titan Effect Generator + iconFile: res:/UI/Texture/Icons/Modules/titanGeneratorAmarr.png +21684: + description: Leviathan Titan Effect Generator + iconFile: res:/UI/Texture/Icons/Modules/titanGeneratorCaldari.png +21685: + description: Erebus Titan Effect Generator + iconFile: res:/UI/Texture/Icons/Modules/titanGeneratorGallente.png +21686: + description: Ragnarok Titan Effect Generator + iconFile: res:/UI/Texture/Icons/Modules/titanGeneratorMinmatar.png +21687: + description: Armored Command Burst - Base + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_ArmorBase.png +21688: + description: Armored Command Burst - Armor Reinforcement + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_ArmorBuffer.png +21689: + description: Armored Command Burst - Rapid Repair + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_ArmorRepair.png +21690: + description: Armored Command Burst - Armor Energizing + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_ArmorResists.png +21691: + description: Information Command Burst - Base + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_InfoBase.png +21692: + description: Information Command Burst - Electronic Superiority + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_InfoEwar.png +21693: + description: Information Command Burst - Sensor Optimization + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_InfoSensors.png +21694: + description: Information Command Burst - Electronic Hardening + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_InfoTargeting.png +21695: + description: Mining Foreman Burst - Base + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_MiningBase.png +21696: + description: Mining Foreman Burst - Mining Equipment Preservation + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_MiningCrystal.png +21698: + description: Mining Foreman Burst - Mining Laser Optimization + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_MiningCycle.png +21699: + description: Mining Foreman Burst - Mining Laser Field Enhancement + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_MiningRange.png +21700: + description: Shield Command Burst - Base + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_ShieldBase.png +21701: + description: Shield Command Burst - Shield Extension + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_ShieldBuffer.png +21702: + description: Shield Command Burst - Active Shielding + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_ShieldRepair.png +21703: + description: Shield Command Burst - Shield Harmonizing + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_ShieldResists.png +21704: + description: Skirmish Command Burst - Base + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_SkirmishBase.png +21705: + description: Skirmish Command Burst - Evasive Maneuvers + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_SkirmishSignature.png +21706: + description: Skirmish Command Burst - Rapid Deployment + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_SkirmishSpeed.png +21707: + description: Skirmish Command Burst - Interdiction Maneuvers + iconFile: res:/UI/Texture/Icons/Modules/fleetBoost_SkirmishWeb.png +21708: + description: Fleet Boost Effect Icon - Armor Reinforcement + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_ArmorBuffer.png +21709: + description: Fleet Boost Effect Icon - Rapid Repair + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_ArmorRepair.png +21710: + description: Fleet Boost Effect Icon - Armor Energizing + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_ArmorResists.png +21711: + description: Fleet Boost Effect Icon - Base + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_Base.png +21712: + description: Fleet Boost Effect Icon - Electronic Superiority + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_InfoEwar.png +21713: + description: Fleet Boost Effect Icon - Sensor Optimization + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_InfoSensors.png +21714: + description: Fleet Boost Effect Icon - Electronic Hardening + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_InfoTargeting.png +21715: + description: Fleet Boost Effect Icon - Mining Equipment Preservation + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_MiningCrystal.png +21716: + description: Fleet Boost Effect Icon - Mining Laser Optimization + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_MiningCycle.png +21717: + description: Fleet Boost Effect Icon - Mining Laser Field Enhancement + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_MiningRange.png +21718: + description: Fleet Boost Effect Icon - Shield Extension + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_ShieldBuffer.png +21719: + description: Fleet Boost Effect Icon - Active Shielding + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_ShieldRepair.png +21720: + description: Fleet Boost Effect Icon - Shield Harmonizing + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_ShieldResists.png +21721: + description: Fleet Boost Effect Icon - Evasive Manuevuers + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_SkirmishSignature.png +21722: + description: Fleet Boost Effect Icon - Rapid Deployment + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_SkirmishSpeed.png +21723: + description: Fleet Boost Effect Icon - Interdiction Maneuvers + iconFile: res:/UI/Texture/Shared/Effects/fleetBoostEffect_SkirmishWeb.png +21724: + description: Multi-racial Titan Effect Generator + iconFile: res:/UI/Texture/Icons/Modules/titanGeneratorMultiple.png +21725: + description: Icon for the NPE Reward Crates + iconFile: res:/ui/texture/icons/inventory/empireCrate.png +21729: + description: Structure Rig Engineering + iconFile: res:/ui/texture/icons/127_64_8.png +21730: + description: Pulse Activated Nexus Invulnerability Core + iconFile: res:/UI/Texture/Icons/Modules/panicModule.png +21731: + description: Skill Injector Restricted + iconFile: res:/UI/texture/icons/inventory/skillInjectorMini_64.png +21732: + description: 250,000 skill points + iconFile: res:/ui/texture/icons/50_64_11.png +21734: + description: 44121_female_bottomOuter_PantsMilF01_Types_PantsMilF01_C16.png + iconFile: res:/UI/Asset/mannequin/bottomouter/44121_female_bottomOuter_PantsMilF01_Types_PantsMilF01_C16.png +21735: + description: 44124_male_bottomOuter_PantsMilM01_Types_PantsMilM01_C16.png + iconFile: res:/UI/Asset/mannequin/bottomouter/44124_male_bottomOuter_PantsMilM01_Types_PantsMilM01_C16.png +21736: + description: 44122_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_C16.png + iconFile: res:/UI/Asset/mannequin/hair/44122_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_C16.png +21738: + description: 44125_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_C16.png + iconFile: res:/UI/Asset/mannequin/hair/44125_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_C16.png +21739: + description: 44120_female_TopMiddle_TshirtF01_Types_TshirtF01_C16.png + iconFile: res:/UI/Asset/mannequin/topmiddle/44120_female_TopMiddle_TshirtF01_Types_TshirtF01_C16.png +21740: + description: 44123_male_topMiddle_TshirtM01_Types_TshirtM01_C16.png + iconFile: res:/UI/Asset/mannequin/topmiddle/44123_male_topMiddle_TshirtM01_Types_TshirtM01_C16.png +21741: + description: Icon for the Naval Starter Pack + iconFile: res:/UI/Texture/Icons/Inventory/starterPack.png +21742: + description: Icon for the Xmas crates + iconFile: res:/UI/Texture/Icons/Inventory/holidayCrate.png diff --git a/scripts/icons.json b/scripts/icons.json deleted file mode 100644 index 9f61cf6b7..000000000 --- a/scripts/icons.json +++ /dev/null @@ -1 +0,0 @@ -{"21349": {"iconFile": "res:/UI/Asset/mannequin/outer/34158_male_outer_JacketMFBR01_Types_JacketMFBR01_Minmatar.png"}, "21462": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36498_male_bottomOuter_PantsEngM01_Types_PantsEngM01_oreorange.png"}, "10899": {"iconFile": "res:/UI/Texture/Icons/dust_icon_veh_lav_ga.png"}, "10898": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_powerdiagnostic.png"}, "10893": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_pgupgrade.png"}, "10892": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_cpuupgrade.png"}, "10891": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_hmg_std.png"}, "10890": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_submachinegun.png"}, "10897": {"iconFile": "res:/UI/Texture/Icons/dust_icon_eq_remotearmorrepair.png"}, "10896": {"iconFile": "res:/UI/Texture/Icons/dust_icon_eq_nanohive_armor.png"}, "10895": {"iconFile": "res:/UI/Texture/Icons/dust_icon_veh_hav_ca.png"}, "10894": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_swarmlauncher.png"}, "349": {"iconFile": "res:/ui/texture/icons/13_64_5.png"}, "21457": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36493_male_bottomOuter_PantsEngM01_Types_PantsEngM01_blueorange.png"}, "2318": {"iconFile": "res:/ui/texture/icons/42_64_7.png"}, "2319": {"iconFile": "res:/ui/texture/icons/42_64_8.png"}, "2316": {"iconFile": "res:/ui/texture/icons/42_64_5.png"}, "2317": {"iconFile": "res:/ui/texture/icons/42_64_6.png"}, "2314": {"iconFile": "res:/ui/texture/icons/42_64_3.png"}, "2315": {"iconFile": "res:/ui/texture/icons/42_64_4.png"}, "2312": {"iconFile": "res:/ui/texture/icons/42_64_1.png"}, "2313": {"iconFile": "res:/ui/texture/icons/42_64_2.png"}, "2310": {"iconFile": "res:/ui/texture/icons/41_64_15.png"}, "2311": {"iconFile": "res:/ui/texture/icons/41_64_16.png"}, "294": {"iconFile": "res:/ui/texture/icons/8_64_10.png"}, "295": {"iconFile": "res:/ui/texture/icons/8_64_9.png"}, "293": {"iconFile": "res:/ui/texture/icons/8_64_11.png"}, "21101": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33745_female_bottomOuter_PantsALF_01_Types_PantsALF_01_blackmatte.png"}, "21100": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33744_female_bottomOuter_PantsALF_01_Types_PantsALF_01_blackleather.png"}, "21103": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33747_female_bottomOuter_PantsALF_01_Types_PantsALF_01_cream.png"}, "21102": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33746_female_bottomOuter_PantsALF_01_Types_PantsALF_01_brownpattern.png"}, "21105": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33749_female_bottomOuter_PantsALF_01_Types_PantsALF_01_gunpattern.png"}, "21104": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33748_female_bottomOuter_PantsALF_01_Types_PantsALF_01_green.png"}, "21107": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33751_female_bottomOuter_PantsALF_01_Types_PantsALF_01_navy.png"}, "21106": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33750_female_bottomOuter_PantsALF_01_Types_PantsALF_01_gunshiny.png"}, "21109": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33753_female_bottomOuter_PantsALF_01_Types_PantsALF_01_redleather.png"}, "21108": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33752_female_bottomOuter_PantsALF_01_Types_PantsALF_01_red.png"}, "3211": {"iconFile": "res:/ui/texture/icons/62_64_2.png"}, "10703": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/3958_female_Accessories_Glasses_Goggles_01_Types_goggles_01.png"}, "10702": {"iconFile": "res:/UI/Asset/mannequin/topouter/4164_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_redsatin.png"}, "10701": {"iconFile": "res:/UI/Asset/mannequin/topouter/4163_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_orangesatin.png"}, "10700": {"iconFile": "res:/UI/Asset/mannequin/topouter/4064_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_olive.png"}, "10704": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/3958_female_Accessories_Glasses_Goggles_01_Types_goggles_01.png"}, "109": {"iconFile": "res:/ui/texture/icons/4_64_12.png"}, "21618": {"iconFile": "res:/UI/Texture/Icons/Modules/multiUseAnalyzer_64.png"}, "21615": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/41576_male_Accessories_Glasses_Glasses_Citadel_M01_Types_GlassesCitadelM01_black.png"}, "21614": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/41575_female_Accessories_Glasses_Glasses_Citadel_F01_Types_GlassesCitadelF01_black.png"}, "21617": {"iconFile": "res:/UI/Texture/Icons/Modules/emergencyHullEnergizer.png"}, "106": {"iconFile": "res:/ui/texture/icons/3_64_11.png"}, "107": {"iconFile": "res:/ui/texture/icons/3_64_10.png"}, "104": {"iconFile": "res:/ui/texture/icons/4_64_10.png"}, "105": {"iconFile": "res:/ui/texture/icons/4_64_11.png"}, "2042": {"iconFile": "res:/ui/texture/icons/34_64_10.png"}, "2040": {"iconFile": "res:/ui/texture/icons/34_64_8.png"}, "2041": {"iconFile": "res:/ui/texture/icons/34_64_9.png"}, "21291": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34109_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_stealth.png"}, "21290": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34108_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_redblack.png"}, "21293": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34111_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_yellow.png"}, "21292": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34110_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_white.png"}, "21295": {"iconFile": "res:/UI/Asset/mannequin/feet/34080_female_Feet_SpaceBoots01F_Types_spaceboots01f_blackgold.png"}, "21294": {"iconFile": "res:/UI/Asset/mannequin/feet/34079_female_Feet_SpaceBoots01F_Types_spaceboots01f_black.png"}, "10639": {"iconFile": "res:/UI/Asset/mannequin/outer/4138_female_Outer_JacketMilF01_Types_JacketMilF01_greengold.png"}, "10638": {"iconFile": "res:/UI/Asset/mannequin/outer/4137_female_Outer_JacketMilF01_Types_JacketMilF01_graphite.png"}, "21299": {"iconFile": "res:/UI/Asset/mannequin/feet/34084_female_Feet_SpaceBoots01F_Types_spaceboots01f_orange.png"}, "10636": {"iconFile": "res:/UI/Asset/mannequin/outer/4136_female_Outer_JacketMilF01_Types_JacketMilF01_black.png"}, "10635": {"iconFile": "res:/UI/Asset/mannequin/Female_hair_Hair_ShortPixieTop_01_Types_hair_shortpixietop_01.png"}, "10634": {"iconFile": "res:/UI/Asset/mannequin/Female_hair_Hair_CurlyShoulderLength_01_Types_hair_curlyshoulderlength_01.png"}, "10633": {"iconFile": "res:/UI/Asset/mannequin/feet/4135_female_Feet_BootsMilF03_Types_BootsMilF03_whiteblack.png"}, "10632": {"iconFile": "res:/UI/Asset/mannequin/feet/4134_female_Feet_BootsMilF03_Types_BootsMilF03_red.png"}, "10631": {"iconFile": "res:/UI/Asset/mannequin/feet/4133_female_Feet_BootsMilF03_Types_BootsMilF03_brownblack.png"}, "10630": {"iconFile": "res:/UI/Asset/mannequin/feet/4132_female_Feet_BootsMilF03_Types_BootsMilF03_blackwhite.png"}, "10141": {"iconFile": "res:/ui/texture/icons/104_128_1.png"}, "10140": {"iconFile": "res:/ui/texture/icons/103_128_4.png"}, "10142": {"iconFile": "res:/ui/texture/icons/104_128_2.png"}, "10144": {"iconFile": "res:/ui/texture/icons/99_64_9.png"}, "10149": {"iconFile": "res:/ui/texture/icons/79_64_9.png"}, "3238": {"iconFile": "res:/ui/texture/icons/64_64_9.png"}, "3239": {"iconFile": "res:/ui/texture/icons/64_64_10.png"}, "2684": {"iconFile": "res:/ui/texture/icons/49_64_14.png"}, "2685": {"iconFile": "res:/ui/texture/icons/49_64_15.png"}, "2686": {"iconFile": "res:/ui/texture/icons/49_64_16.png"}, "2680": {"iconFile": "res:/ui/texture/icons/49_64_10.png"}, "2681": {"iconFile": "res:/ui/texture/icons/49_64_11.png"}, "2682": {"iconFile": "res:/ui/texture/icons/49_64_12.png"}, "2683": {"iconFile": "res:/ui/texture/icons/49_64_13.png"}, "10563": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_Goggles_01_Types_goggles_01.png"}, "98": {"iconFile": "res:/ui/texture/icons/3_64_5.png"}, "10561": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightGold.png"}, "10560": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightDark.png"}, "10567": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_Monocle_01_Types_MonocleF01_RightGray.png"}, "10566": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_Monocle_01_Types_MonocleF01_RightGold.png"}, "10565": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_Monocle_01_Types_MonocleF01_LeftGray.png"}, "10564": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_Monocle_01_Types_MonocleF01_LeftGold.png"}, "91": {"iconFile": "res:/ui/texture/icons/2_64_8.png"}, "90": {"iconFile": "res:/ui/texture/icons/1_64_1.png"}, "93": {"iconFile": "res:/ui/texture/icons/3_64_15.png"}, "92": {"iconFile": "res:/ui/texture/icons/4_64_13.png"}, "95": {"iconFile": "res:/ui/texture/icons/3_64_14.png"}, "94": {"iconFile": "res:/ui/texture/icons/4_64_14.png"}, "97": {"iconFile": "res:/ui/texture/icons/3_64_8.png"}, "96": {"iconFile": "res:/ui/texture/icons/3_64_2.png"}, "10093": {"iconFile": "res:/ui/texture/icons/96_64_14.png"}, "10092": {"iconFile": "res:/ui/texture/icons/96_64_13.png"}, "10091": {"iconFile": "res:/ui/texture/icons/96_64_12.png"}, "10090": {"iconFile": "res:/ui/texture/icons/96_64_11.png"}, "1627": {"iconFile": "res:/ui/texture/corps/20_128_2.png"}, "10096": {"iconFile": "res:/ui/texture/icons/97_64_1.png"}, "10095": {"iconFile": "res:/ui/texture/icons/96_64_16.png"}, "10094": {"iconFile": "res:/ui/texture/icons/96_64_15.png"}, "1629": {"iconFile": "res:/ui/texture/icons/28_128_2.png"}, "1628": {"iconFile": "res:/ui/texture/icons/28_128_1.png"}, "21439": {"iconFile": "res:/UI/Texture/Icons/5_64_18.png"}, "3208": {"iconFile": "res:/ui/texture/icons/61_128_2.png"}, "2860": {"iconFile": "res:/ui/texture/icons/54_64_2.png"}, "2861": {"iconFile": "res:/ui/texture/icons/54_64_3.png"}, "2862": {"iconFile": "res:/ui/texture/icons/54_64_4.png"}, "2863": {"iconFile": "res:/ui/texture/icons/54_64_5.png"}, "2864": {"iconFile": "res:/ui/texture/icons/54_64_6.png"}, "2865": {"iconFile": "res:/ui/texture/icons/54_64_7.png"}, "2866": {"iconFile": "res:/ui/texture/icons/54_64_8.png"}, "2867": {"iconFile": "res:/ui/texture/icons/54_64_9.png"}, "2868": {"iconFile": "res:/ui/texture/icons/54_64_10.png"}, "2869": {"iconFile": "res:/ui/texture/icons/54_64_11.png"}, "21315": {"iconFile": "res:/UI/Asset/mannequin/outer/34100_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_yellow.png"}, "1199": {"iconFile": "res:/ui/texture/icons/11_64_7.png"}, "1198": {"iconFile": "res:/ui/texture/icons/11_64_6.png"}, "3348": {"iconFile": "res:/ui/texture/icons/74_64_10.png"}, "1191": {"iconFile": "res:/ui/texture/icons/10_64_15.png"}, "1190": {"iconFile": "res:/ui/texture/icons/10_64_14.png"}, "1193": {"iconFile": "res:/ui/texture/icons/11_64_1.png"}, "1192": {"iconFile": "res:/ui/texture/icons/10_64_16.png"}, "1195": {"iconFile": "res:/ui/texture/icons/11_64_3.png"}, "1194": {"iconFile": "res:/ui/texture/icons/11_64_2.png"}, "3344": {"iconFile": "res:/ui/texture/icons/74_64_6.png"}, "1196": {"iconFile": "res:/ui/texture/icons/11_64_4.png"}, "21313": {"iconFile": "res:/UI/Asset/mannequin/outer/34098_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_stealth.png"}, "1177": {"iconFile": "res:/ui/texture/icons/10_64_5.png"}, "1175": {"iconFile": "res:/ui/texture/icons/26_64_12.png"}, "1174": {"iconFile": "res:/ui/texture/icons/26_64_13.png"}, "1173": {"iconFile": "res:/ui/texture/icons/26_64_15.png"}, "1172": {"iconFile": "res:/ui/texture/icons/26_64_16.png"}, "1171": {"iconFile": "res:/ui/texture/icons/27_64_5.png"}, "1170": {"iconFile": "res:/ui/texture/icons/27_64_14.png"}, "1179": {"iconFile": "res:/ui/texture/icons/10_64_3.png"}, "1178": {"iconFile": "res:/ui/texture/icons/10_64_4.png"}, "1285": {"iconFile": "res:/ui/texture/icons/14_64_2.png"}, "1284": {"iconFile": "res:/ui/texture/icons/12_64_6.png"}, "1287": {"iconFile": "res:/ui/texture/icons/14_64_4.png"}, "1286": {"iconFile": "res:/ui/texture/icons/14_64_3.png"}, "1283": {"iconFile": "res:/ui/texture/icons/12_64_4.png"}, "1282": {"iconFile": "res:/ui/texture/icons/23_64_10.png"}, "1289": {"iconFile": "res:/ui/texture/icons/14_64_6.png"}, "1288": {"iconFile": "res:/ui/texture/icons/14_64_5.png"}, "21474": {"iconFile": "res:/UI/Asset/mannequin/feet/36510_male_Feet_ShoesEngM01_Types_ShoesEngM01_oreorange.png"}, "1579": {"iconFile": "res:/ui/texture/corps/36_128_4.png"}, "1578": {"iconFile": "res:/ui/texture/corps/34_128_1.png"}, "1573": {"iconFile": "res:/ui/texture/corps/33_128_4.png"}, "1572": {"iconFile": "res:/ui/texture/corps/11_128_1.png"}, "1571": {"iconFile": "res:/ui/texture/corps/41_128_1.png"}, "1570": {"iconFile": "res:/ui/texture/corps/35_128_1.png"}, "1577": {"iconFile": "res:/ui/texture/corps/34_128_4.png"}, "1576": {"iconFile": "res:/ui/texture/corps/36_128_1.png"}, "1575": {"iconFile": "res:/ui/texture/corps/36_128_3.png"}, "1574": {"iconFile": "res:/ui/texture/corps/40_128_1.png"}, "21454": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36489_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_Cyan.png"}, "1370": {"iconFile": "res:/ui/texture/icons/24_64_16.png"}, "405": {"iconFile": "res:/ui/texture/icons/11_64_10.png"}, "404": {"iconFile": "res:/ui/texture/icons/11_64_11.png"}, "402": {"iconFile": "res:/ui/texture/icons/6_64_16.png"}, "401": {"iconFile": "res:/ui/texture/icons/6_64_12.png"}, "400": {"iconFile": "res:/ui/texture/icons/6_64_15.png"}, "1379": {"iconFile": "res:/ui/texture/icons/22_32_2.png"}, "1378": {"iconFile": "res:/ui/texture/icons/22_32_1.png"}, "10737": {"iconFile": "res:/UI/Asset/mannequin/hair_4088_949.png"}, "3838": {"iconFile": "res:/UI/netres/mission_content/angels_and_artifacts.png"}, "3839": {"iconFile": "res:/UI/netres/mission_content/smash_and_grab.png"}, "10884": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_shieldextender.png"}, "10885": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_shieldrecharger.png"}, "10886": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_imp_movement.png"}, "10887": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_bio_healthextender.png"}, "10880": {"iconFile": "res:/UI/Texture/Icons/dust_icon_tur_missile_l.png"}, "10881": {"iconFile": "res:/UI/Texture/Icons/dust_icon_tur_missile_s.png"}, "10882": {"iconFile": "res:/UI/Texture/Icons/dust_icon_tur_default.png"}, "10883": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_wpnupg_damagemodifier.png"}, "10888": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_bio_healthregenerator.png"}, "10889": {"iconFile": "res:/UI/Texture/Icons/dust_icon_veh_lav_ca.png"}, "379": {"iconFile": "res:/ui/texture/icons/12_64_15.png"}, "371": {"iconFile": "res:/ui/texture/icons/13_64_2.png"}, "370": {"iconFile": "res:/ui/texture/icons/13_64_6.png"}, "376": {"iconFile": "res:/ui/texture/icons/13_64_1.png"}, "21477": {"iconFile": "res:/UI/Asset/mannequin/feet/36513_female_Feet_ShoesEngF01_Types_ShoesEngF01_Camo.png"}, "398": {"iconFile": "res:/ui/texture/icons/11_64_5.png"}, "2309": {"iconFile": "res:/ui/texture/icons/36_64_15.png"}, "2302": {"iconFile": "res:/ui/texture/icons/25_64_15.png"}, "2304": {"iconFile": "res:/ui/texture/icons/41_64_4.png"}, "21112": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33756_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_camo.png"}, "21113": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33757_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_greyflat.png"}, "21110": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33754_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_black.png"}, "21111": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33755_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_blue.png"}, "21116": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33760_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_reddark.png"}, "21117": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33761_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_yellowgloss.png"}, "3748": {"iconFile": "res:/ui/texture/icons/84_64_5.png"}, "3749": {"iconFile": "res:/ui/texture/icons/83_64_9.png"}, "3746": {"iconFile": "res:/ui/texture/icons/83_64_7.png"}, "3203": {"iconFile": "res:/ui/texture/icons/68_64_4.png"}, "3744": {"iconFile": "res:/ui/texture/icons/83_64_5.png"}, "3745": {"iconFile": "res:/ui/texture/icons/83_64_6.png"}, "3742": {"iconFile": "res:/ui/texture/icons/83_64_4.png"}, "3743": {"iconFile": "res:/ui/texture/icons/84_64_1.png"}, "3740": {"iconFile": "res:/ui/texture/icons/83_64_2.png"}, "3741": {"iconFile": "res:/ui/texture/icons/83_64_3.png"}, "21472": {"iconFile": "res:/UI/Asset/mannequin/feet/36508_male_Feet_ShoesEngM01_Types_ShoesEngM01_cyan.png"}, "3202": {"iconFile": "res:/ui/texture/icons/68_64_3.png"}, "21475": {"iconFile": "res:/UI/Asset/mannequin/feet/36511_female_Feet_ShoesEngF01_Types_ShoesEngF01_BlueOrange.png"}, "3201": {"iconFile": "res:/ui/texture/icons/68_64_2.png"}, "21608": {"iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorStasisWebification.png"}, "21609": {"iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorTargetIllumination.png"}, "21606": {"iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorGuidanceDisruption.png"}, "21607": {"iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorSensorDampening.png"}, "21604": {"iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorECM.png"}, "21605": {"iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorEnergyNeutralization.png"}, "21602": {"iconFile": "res:/ui/texture/icons/127_64_7.png"}, "21603": {"iconFile": "res:/UI/Texture/Icons/Modules/emergencyHullEnergizer.png"}, "21600": {"iconFile": "res:/ui/texture/icons/127_64_6.png"}, "170": {"iconFile": "res:/ui/texture/icons/21_64_16.png"}, "2053": {"iconFile": "res:/ui/texture/icons/34_64_12.png"}, "2052": {"iconFile": "res:/ui/texture/icons/34_64_11.png"}, "2055": {"iconFile": "res:/ui/texture/icons/31_64_9.png"}, "2054": {"iconFile": "res:/ui/texture/icons/34_64_15.png"}, "2057": {"iconFile": "res:/ui/texture/icons/31_64_11.png"}, "2056": {"iconFile": "res:/ui/texture/icons/31_64_10.png"}, "2059": {"iconFile": "res:/ui/texture/icons/31_64_13.png"}, "2058": {"iconFile": "res:/ui/texture/icons/31_64_12.png"}, "10628": {"iconFile": "res:/UI/Asset/mannequin/feet/4131_female_Feet_BootsMilF02_Types_BootsMilF02_red.png"}, "21283": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34101_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_black.png"}, "21280": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34055_female_bottomMiddle_TightsF01_Types_TightsF01_yellow.png"}, "21281": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34050_female_bottomMiddle_TightsF01_Types_TightsF01_thickblue.png"}, "21286": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34104_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_brown.png"}, "21287": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34105_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_greengold.png"}, "21284": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34102_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_blackgold.png"}, "21285": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34103_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_blue.png"}, "10620": {"iconFile": "res:/UI/Asset/mannequin/feet/4124_female_Feet_BootsMilF01_Types_BootsMilF01_red.png"}, "10621": {"iconFile": "res:/UI/Asset/mannequin/feet/4125_female_Feet_BootsMilF01_Types_BootsMilF01_silver.png"}, "10622": {"iconFile": "res:/UI/Asset/mannequin/feet/4126_female_Feet_BootsMilF01_Types_BootsMilF01_turquoise.png"}, "21289": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34107_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_red.png"}, "10624": {"iconFile": "res:/UI/Asset/mannequin/feet/4127_female_Feet_BootsMilF02_Types_BootsMilF02_blackgold.png"}, "10625": {"iconFile": "res:/UI/Asset/mannequin/feet/4128_female_Feet_BootsMilF02_Types_BootsMilF02_brown.png"}, "10626": {"iconFile": "res:/UI/Asset/mannequin/feet/4129_female_Feet_BootsMilF02_Types_BootsMilF02_matbrown.png"}, "10627": {"iconFile": "res:/UI/Asset/mannequin/feet/4130_female_Feet_BootsMilF02_Types_BootsMilF02_matgray.png"}, "10152": {"iconFile": "res:/ui/texture/icons/100_64_7.png"}, "10153": {"iconFile": "res:/ui/texture/icons/100_64_8.png"}, "10150": {"iconFile": "res:/ui/texture/icons/100_64_5.png"}, "10151": {"iconFile": "res:/ui/texture/icons/101_64_10.png"}, "10156": {"iconFile": "res:/ui/texture/icons/101_64_2.png"}, "10157": {"iconFile": "res:/ui/texture/icons/101_64_3.png"}, "10154": {"iconFile": "res:/ui/texture/icons/100_64_12.png"}, "10155": {"iconFile": "res:/ui/texture/icons/101_64_1.png"}, "10158": {"iconFile": "res:/ui/texture/icons/101_64_4.png"}, "10159": {"iconFile": "res:/ui/texture/icons/101_64_5.png"}, "21417": {"iconFile": "res:/ui/texture/icons/99_64_10.png"}, "3225": {"iconFile": "res:/ui/texture/icons/62_64_16.png"}, "2699": {"iconFile": "res:/ui/texture/icons/51_64_13.png"}, "2698": {"iconFile": "res:/ui/texture/icons/51_64_12.png"}, "2697": {"iconFile": "res:/ui/texture/icons/51_64_11.png"}, "2696": {"iconFile": "res:/ui/texture/icons/51_64_10.png"}, "2693": {"iconFile": "res:/ui/texture/icons/51_64_7.png"}, "21419": {"iconFile": "res:/ui/texture/icons/99_64_12.png"}, "3226": {"iconFile": "res:/ui/texture/icons/63_64_13.png"}, "3221": {"iconFile": "res:/ui/texture/icons/62_64_12.png"}, "3220": {"iconFile": "res:/ui/texture/icons/62_64_11.png"}, "10578": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4030_female_bottomOuter_PantsMilF01_Types_PantsMilF01_matred.png"}, "10579": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4032_female_bottomOuter_PantsMilF01_Types_PantsMilF01_silver.png"}, "10574": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4021_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blacksilver.png"}, "10575": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4022_female_bottomOuter_PantsMilF01_Types_PantsMilF01_gold.png"}, "10576": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4026_female_bottomOuter_PantsMilF01_Types_PantsMilF01_matblue.png"}, "10577": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4028_female_bottomOuter_PantsMilF01_Types_PantsMilF01_matgreen.png"}, "10570": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4018_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackgold.png"}, "10571": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4019_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackgoldline.png"}, "10572": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3997_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackgray.png"}, "10573": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4020_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackredgold.png"}, "3232": {"iconFile": "res:/ui/texture/icons/64_64_3.png"}, "3233": {"iconFile": "res:/ui/texture/icons/64_64_4.png"}, "3230": {"iconFile": "res:/ui/texture/icons/64_64_1.png"}, "3231": {"iconFile": "res:/ui/texture/icons/64_64_2.png"}, "10088": {"iconFile": "res:/ui/texture/icons/96_64_9.png"}, "10089": {"iconFile": "res:/ui/texture/icons/96_64_10.png"}, "1618": {"iconFile": "res:/ui/texture/corps/37_128_1.png"}, "1619": {"iconFile": "res:/ui/texture/corps/38_128_4.png"}, "1616": {"iconFile": "res:/ui/texture/corps/6_128_3.png"}, "1617": {"iconFile": "res:/ui/texture/corps/37_128_2.png"}, "1614": {"iconFile": "res:/ui/texture/corps/1_128_2.png"}, "1615": {"iconFile": "res:/ui/texture/corps/2_128_2.png"}, "1612": {"iconFile": "res:/ui/texture/corps/4_128_3.png"}, "10081": {"iconFile": "res:/ui/texture/icons/96_64_2.png"}, "1610": {"iconFile": "res:/ui/texture/corps/7_128_1.png"}, "1611": {"iconFile": "res:/ui/texture/corps/8_128_3.png"}, "2873": {"iconFile": "res:/ui/texture/icons/54_64_15.png"}, "2872": {"iconFile": "res:/ui/texture/icons/54_64_14.png"}, "2871": {"iconFile": "res:/ui/texture/icons/54_64_13.png"}, "2870": {"iconFile": "res:/ui/texture/icons/54_64_12.png"}, "2877": {"iconFile": "res:/ui/texture/icons/55_64_3.png"}, "2876": {"iconFile": "res:/ui/texture/icons/55_64_2.png"}, "2875": {"iconFile": "res:/ui/texture/icons/55_64_1.png"}, "2874": {"iconFile": "res:/ui/texture/icons/54_64_16.png"}, "2879": {"iconFile": "res:/ui/texture/icons/55_64_5.png"}, "2878": {"iconFile": "res:/ui/texture/icons/55_64_4.png"}, "1142": {"iconFile": "res:/ui/texture/icons/8_64_5.png"}, "1143": {"iconFile": "res:/ui/texture/icons/8_64_6.png"}, "1140": {"iconFile": "res:/ui/texture/icons/8_64_3.png"}, "1141": {"iconFile": "res:/ui/texture/icons/8_64_4.png"}, "1144": {"iconFile": "res:/ui/texture/icons/8_64_7.png"}, "1145": {"iconFile": "res:/ui/texture/icons/8_64_8.png"}, "1546": {"iconFile": "res:/ui/texture/corps/14_128_1.png"}, "1547": {"iconFile": "res:/ui/texture/corps/36_128_2.png"}, "1544": {"iconFile": "res:/ui/texture/corps/34_128_2.png"}, "1545": {"iconFile": "res:/ui/texture/corps/27_128_4.png"}, "1542": {"iconFile": "res:/ui/texture/corps/35_128_3.png"}, "1543": {"iconFile": "res:/ui/texture/corps/28_128_3.png"}, "1540": {"iconFile": "res:/ui/texture/corps/24_128_3.png"}, "1541": {"iconFile": "res:/ui/texture/corps/26_128_3.png"}, "1548": {"iconFile": "res:/ui/texture/corps/3_128_4.png"}, "1549": {"iconFile": "res:/ui/texture/corps/24_128_1.png"}, "3320": {"iconFile": "res:/ui/texture/icons/71_64_14.png"}, "3321": {"iconFile": "res:/ui/texture/icons/71_64_15.png"}, "3323": {"iconFile": "res:/ui/texture/icons/72_64_1.png"}, "1388": {"iconFile": "res:/ui/texture/icons/22_32_12.png"}, "1389": {"iconFile": "res:/ui/texture/icons/22_32_13.png"}, "413": {"iconFile": "res:/ui/texture/icons/8_64_12.png"}, "1384": {"iconFile": "res:/ui/texture/icons/22_32_7.png"}, "1385": {"iconFile": "res:/ui/texture/icons/22_32_9.png"}, "1386": {"iconFile": "res:/ui/texture/icons/22_32_10.png"}, "1387": {"iconFile": "res:/ui/texture/icons/22_32_11.png"}, "1380": {"iconFile": "res:/ui/texture/icons/22_32_3.png"}, "1381": {"iconFile": "res:/ui/texture/icons/22_32_4.png"}, "1382": {"iconFile": "res:/ui/texture/icons/22_32_5.png"}, "1383": {"iconFile": "res:/ui/texture/icons/22_32_6.png"}, "366": {"iconFile": "res:/ui/texture/icons/13_64_7.png"}, "365": {"iconFile": "res:/ui/texture/icons/13_64_3.png"}, "360": {"iconFile": "res:/ui/texture/icons/13_64_15.png"}, "361": {"iconFile": "res:/ui/texture/icons/13_64_11.png"}, "381": {"iconFile": "res:/ui/texture/icons/12_64_11.png"}, "384": {"iconFile": "res:/ui/texture/icons/12_64_14.png"}, "386": {"iconFile": "res:/ui/texture/icons/12_64_10.png"}, "387": {"iconFile": "res:/ui/texture/icons/12_64_9.png"}, "389": {"iconFile": "res:/ui/texture/icons/12_64_13.png"}, "3759": {"iconFile": "res:/ui/texture/icons/76_64_16.png"}, "21129": {"iconFile": "res:/UI/Asset/mannequin/outer/33726_female_Outer_JacketALF_01_Types_JacketALF_01_blackgold.png"}, "21128": {"iconFile": "res:/UI/Asset/mannequin/feet/33725_female_Feet_BootsSLF_01_Types_BootsSLF_01_red.png"}, "3751": {"iconFile": "res:/ui/texture/icons/83_64_11.png"}, "3750": {"iconFile": "res:/ui/texture/icons/83_64_10.png"}, "3753": {"iconFile": "res:/ui/texture/icons/84_64_9.png"}, "3752": {"iconFile": "res:/ui/texture/icons/83_64_12.png"}, "3755": {"iconFile": "res:/ui/texture/icons/84_64_8.png"}, "3754": {"iconFile": "res:/ui/texture/icons/83_64_13.png"}, "21121": {"iconFile": "res:/UI/Asset/mannequin/feet/33718_female_Feet_BootsALF_01_Types_BootsALF_01_navy.png"}, "3756": {"iconFile": "res:/ui/texture/icons/76_64_4.png"}, "2190": {"iconFile": "res:/ui/texture/icons/37_64_14.png"}, "2191": {"iconFile": "res:/ui/texture/icons/37_64_15.png"}, "2192": {"iconFile": "res:/ui/texture/icons/37_64_16.png"}, "2193": {"iconFile": "res:/ui/texture/icons/39_64_1.png"}, "2194": {"iconFile": "res:/ui/texture/icons/39_64_2.png"}, "2195": {"iconFile": "res:/ui/texture/icons/39_64_3.png"}, "2196": {"iconFile": "res:/ui/texture/icons/39_64_4.png"}, "2197": {"iconFile": "res:/ui/texture/icons/39_64_5.png"}, "2198": {"iconFile": "res:/ui/texture/icons/39_64_6.png"}, "2199": {"iconFile": "res:/ui/texture/icons/39_64_7.png"}, "2200": {"iconFile": "res:/ui/texture/icons/39_64_8.png"}, "2201": {"iconFile": "res:/ui/texture/icons/39_64_9.png"}, "2202": {"iconFile": "res:/ui/texture/icons/39_64_10.png"}, "2203": {"iconFile": "res:/ui/texture/icons/39_64_11.png"}, "2204": {"iconFile": "res:/ui/texture/icons/39_64_12.png"}, "2205": {"iconFile": "res:/ui/texture/icons/39_64_13.png"}, "2206": {"iconFile": "res:/ui/texture/icons/39_64_14.png"}, "2207": {"iconFile": "res:/ui/texture/icons/39_64_15.png"}, "2208": {"iconFile": "res:/ui/texture/icons/39_64_16.png"}, "2209": {"iconFile": "res:/ui/texture/icons/40_64_1.png"}, "21610": {"iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorTrackingDisruption.png"}, "21613": {"iconFile": "res:/ui/texture/icons/4_64_9.png"}, "3210": {"iconFile": "res:/ui/texture/icons/62_64_1.png"}, "21389": {"iconFile": "res:/UI/Asset/mannequin/outer/34353_female_Outer_JacketPrtF01_Types_JacketPrtF01_bloodraiders.png"}, "21388": {"iconFile": "res:/UI/Asset/mannequin/outer/34350_female_Outer_JacketPrtF01_Types_JacketPrtF01_sansha.png"}, "21383": {"iconFile": "res:/UI/Texture/Icons/commendationMinmatar.png"}, "21382": {"iconFile": "res:/UI/Texture/Icons/commendationGallente.png"}, "21381": {"iconFile": "res:/UI/Texture/Icons/commendationCaldari.png"}, "21380": {"iconFile": "res:/UI/Texture/Icons/commendationAmarr.png"}, "21387": {"iconFile": "res:/UI/Asset/mannequin/outer/34393_male_outer_JacketPrtm01_Types_JacketPrtm01_orange.png"}, "21386": {"iconFile": "res:/UI/Asset/mannequin/outer/34349_male_outer_JacketPrtm01_Types_JacketPrtm01_guristas.png"}, "21385": {"iconFile": "res:/UI/Asset/mannequin/outer/34348_male_outer_JacketPrtm01_Types_JacketPrtm01_sansha.png"}, "21384": {"iconFile": "res:/UI/Asset/mannequin/outer/34347_male_outer_JacketPrtm01_Types_JacketPrtm01_bloodraiders.png"}, "168": {"iconFile": "res:/ui/texture/icons/12_64_12.png"}, "169": {"iconFile": "res:/ui/texture/icons/21_64_12.png"}, "21400": {"iconFile": "res:/UI/Asset/mannequin/feet/34363_female_Feet_BootsPrtF01_Types_BootsPrtF01_bloodraiders.png"}, "2512": {"iconFile": "res:/ui/texture/icons/7_64_12.png"}, "2734": {"iconFile": "res:/ui/texture/icons/22_32_50.png"}, "2735": {"iconFile": "res:/ui/texture/icons/22_32_51.png"}, "2736": {"iconFile": "res:/ui/texture/icons/22_32_52.png"}, "2732": {"iconFile": "res:/ui/texture/icons/3_64_12.png"}, "2733": {"iconFile": "res:/ui/texture/icons/22_32_49.png"}, "10166": {"iconFile": "res:/ui/texture/icons/101_64_13.png"}, "10165": {"iconFile": "res:/ui/texture/icons/101_64_12.png"}, "10164": {"iconFile": "res:/ui/texture/icons/101_64_11.png"}, "10163": {"iconFile": "res:/ui/texture/icons/101_64_9.png"}, "10162": {"iconFile": "res:/ui/texture/icons/101_64_8.png"}, "10161": {"iconFile": "res:/ui/texture/icons/101_64_7.png"}, "10160": {"iconFile": "res:/ui/texture/icons/101_64_6.png"}, "21255": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34017_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_Black.png"}, "21254": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34044_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_Gunmetal.png"}, "21257": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34019_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_BlackShinyMech.png"}, "21256": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34018_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_BlackOrangeMech.png"}, "21251": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34041_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_BlueWhite.png"}, "21250": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34040_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_BlackYellow.png"}, "21253": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34043_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_GreenYellow.png"}, "21252": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34042_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_GreenCamo.png"}, "21259": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34021_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_BlueBlackShinyMech.png"}, "21258": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34020_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_BlackYellow.png"}, "21402": {"iconFile": "res:/UI/Asset/mannequin/feet/34365_female_Feet_BootsPrtF01_Types_BootsPrtF01_guristas.png"}, "10760": {"iconFile": "res:/UI/Asset/mannequin/feet/4173_male_Feet_BootsMilM01_Types_BootsMilM01_wornbrown.png"}, "10763": {"iconFile": "res:/UI/Asset/mannequin/feet/4175_male_Feet_BootsMilM02_Types_BootsMilM02_gray.png"}, "10762": {"iconFile": "res:/UI/Asset/mannequin/feet/4174_male_Feet_BootsMilM02_Types_BootsMilM02_brown.png"}, "10765": {"iconFile": "res:/UI/Asset/mannequin/Male_Feet_BootsMilM03_Types_BootsMilM03_black.png"}, "10764": {"iconFile": "res:/UI/Asset/mannequin/feet/4176_male_Feet_BootsMilM02_Types_BootsMilM02_tan.png"}, "10767": {"iconFile": "res:/UI/Asset/mannequin/feet/4178_male_Feet_BootsMilM03_Types_BootsMilM03_gray.png"}, "10766": {"iconFile": "res:/UI/Asset/mannequin/feet/4177_male_Feet_BootsMilM03_Types_BootsMilM03_brown.png"}, "10769": {"iconFile": "res:/UI/Asset/mannequin/Male_hair_Hair_Stubble_01_Types_Hair_Stubble_01.png"}, "10768": {"iconFile": "res:/UI/Asset/mannequin/feet/4179_male_Feet_BootsMilM03_Types_BootsMilM03_tan.png"}, "21297": {"iconFile": "res:/UI/Asset/mannequin/feet/34082_female_Feet_SpaceBoots01F_Types_spaceboots01f_brown.png"}, "21403": {"iconFile": "res:/UI/Asset/mannequin/outer/34351_female_Outer_JacketPrtF01_Types_JacketPrtF01_guristas.png"}, "21296": {"iconFile": "res:/UI/Asset/mannequin/feet/34081_female_Feet_SpaceBoots01F_Types_spaceboots01f_blue.png"}, "21298": {"iconFile": "res:/UI/Asset/mannequin/feet/34083_female_Feet_SpaceBoots01F_Types_spaceboots01f_greengold.png"}, "1609": {"iconFile": "res:/ui/texture/corps/8_128_2.png"}, "1608": {"iconFile": "res:/ui/texture/corps/5_128_1.png"}, "3229": {"iconFile": "res:/ui/texture/icons/63_64_16.png"}, "3228": {"iconFile": "res:/ui/texture/icons/63_64_15.png"}, "21415": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/34825_female_TopMiddle_ShirtQF01_Types_ff2015f01.png"}, "21414": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/34824_male_topMiddle_ShirtQM01_Types_ff2015m01.png"}, "1601": {"iconFile": "res:/ui/texture/corps/9_128_1.png"}, "1600": {"iconFile": "res:/ui/texture/corps/5_128_2.png"}, "3227": {"iconFile": "res:/ui/texture/icons/63_64_14.png"}, "1602": {"iconFile": "res:/ui/texture/corps/7_128_3.png"}, "1605": {"iconFile": "res:/ui/texture/corps/9_128_2.png"}, "1604": {"iconFile": "res:/ui/texture/corps/8_128_4.png"}, "1607": {"iconFile": "res:/ui/texture/corps/4_128_2.png"}, "1606": {"iconFile": "res:/ui/texture/corps/9_128_3.png"}, "2848": {"iconFile": "res:/ui/texture/icons/53_64_6.png"}, "2849": {"iconFile": "res:/ui/texture/icons/53_64_7.png"}, "2846": {"iconFile": "res:/ui/texture/icons/53_64_4.png"}, "2847": {"iconFile": "res:/ui/texture/icons/53_64_5.png"}, "2844": {"iconFile": "res:/ui/texture/icons/53_64_2.png"}, "2845": {"iconFile": "res:/ui/texture/icons/53_64_3.png"}, "2842": {"iconFile": "res:/ui/texture/icons/52_64_16.png"}, "2843": {"iconFile": "res:/ui/texture/icons/53_64_1.png"}, "2840": {"iconFile": "res:/ui/texture/icons/52_64_14.png"}, "2841": {"iconFile": "res:/ui/texture/icons/52_64_15.png"}, "10215": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4038_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightGray.png"}, "10214": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4037_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightDark.png"}, "3322": {"iconFile": "res:/ui/texture/icons/71_64_16.png"}, "10216": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4039_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightGold.png"}, "3324": {"iconFile": "res:/ui/texture/icons/72_64_2.png"}, "10210": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/3958_female_Accessories_Glasses_Goggles_01_Types_goggles_01.png"}, "3326": {"iconFile": "res:/ui/texture/icons/72_64_4.png"}, "3327": {"iconFile": "res:/ui/texture/icons/72_64_5.png"}, "3328": {"iconFile": "res:/ui/texture/icons/72_64_6.png"}, "3329": {"iconFile": "res:/ui/texture/icons/72_64_8.png"}, "10219": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4042_female_Accessories_Glasses_Monocle_01_Types_MonocleF01_RightGray.png"}, "10185": {"iconFile": "res:/ui/texture/corps/43_128_2.png"}, "10184": {"iconFile": "res:/ui/texture/corps/41_128_4.png"}, "10187": {"iconFile": "res:/ui/texture/corps/43_128_4.png"}, "10186": {"iconFile": "res:/ui/texture/corps/43_128_3.png"}, "10181": {"iconFile": "res:/ui/texture/corps/42_128_3.png"}, "10180": {"iconFile": "res:/ui/texture/corps/43_128_1.png"}, "10183": {"iconFile": "res:/ui/texture/corps/42_128_4.png"}, "10182": {"iconFile": "res:/ui/texture/corps/42_128_1.png"}, "2998": {"iconFile": "res:/ui/texture/icons/56_64_16.png"}, "1159": {"iconFile": "res:/ui/texture/icons/27_64_6.png"}, "1158": {"iconFile": "res:/ui/texture/icons/27_64_7.png"}, "1550": {"iconFile": "res:/ui/texture/corps/19_128_3.png"}, "1157": {"iconFile": "res:/ui/texture/icons/27_64_8.png"}, "1156": {"iconFile": "res:/ui/texture/icons/26_64_14.png"}, "1555": {"iconFile": "res:/ui/texture/corps/35_128_4.png"}, "1551": {"iconFile": "res:/ui/texture/corps/38_128_1.png"}, "2999": {"iconFile": "res:/ui/texture/icons/57_64_1.png"}, "1553": {"iconFile": "res:/ui/texture/corps/4_128_1.png"}, "1552": {"iconFile": "res:/ui/texture/corps/24_128_2.png"}, "3038": {"iconFile": "res:/ui/texture/icons/17_128_3.png"}, "1554": {"iconFile": "res:/ui/texture/corps/24_128_4.png"}, "1557": {"iconFile": "res:/ui/texture/corps/28_128_4.png"}, "1556": {"iconFile": "res:/ui/texture/corps/40_128_2.png"}, "2990": {"iconFile": "res:/ui/texture/icons/56_64_8.png"}, "3035": {"iconFile": "res:/ui/texture/icons/58_64_15.png"}, "2992": {"iconFile": "res:/ui/texture/icons/56_64_10.png"}, "2993": {"iconFile": "res:/ui/texture/icons/56_64_11.png"}, "3030": {"iconFile": "res:/ui/texture/icons/58_64_7.png"}, "2995": {"iconFile": "res:/ui/texture/icons/56_64_13.png"}, "3032": {"iconFile": "res:/ui/texture/icons/58_64_10.png"}, "2997": {"iconFile": "res:/ui/texture/icons/56_64_15.png"}, "1559": {"iconFile": "res:/ui/texture/corps/26_128_4.png"}, "21413": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/34825_female_TopMiddle_ShirtQF01_Types_ff2015f01.png"}, "2991": {"iconFile": "res:/ui/texture/icons/56_64_9.png"}, "3036": {"iconFile": "res:/ui/texture/icons/58_64_13.png"}, "3299": {"iconFile": "res:/ui/texture/icons/70_64_9.png"}, "21446": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36481_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_redwhite.png"}, "1558": {"iconFile": "res:/ui/texture/corps/40_128_4.png"}, "2994": {"iconFile": "res:/ui/texture/icons/56_64_12.png"}, "21447": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36482_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_camo.png"}, "3031": {"iconFile": "res:/ui/texture/icons/58_64_9.png"}, "10794": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4192_male_TopMiddle_TanktopM01_Types_TanktopM01_blue.png"}, "21412": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/34824_male_topMiddle_ShirtQM01_Types_ff2015m01.png"}, "2996": {"iconFile": "res:/ui/texture/icons/56_64_14.png"}, "10795": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4193_male_TopMiddle_TanktopM01_Types_TanktopM01_brown.png"}, "3033": {"iconFile": "res:/ui/texture/icons/58_64_11.png"}, "10796": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4194_male_TopMiddle_TanktopM01_Types_TanktopM01_gray.png"}, "10797": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4195_male_TopMiddle_TanktopM01_Types_TanktopM01_green.png"}, "10790": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4189_male_TopMiddle_ShirtGM01_Types_ShirtGM01_p_desertcamo.png"}, "10791": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4190_male_TopMiddle_ShirtGM01_Types_ShirtGM01_white.png"}, "1399": {"iconFile": "res:/ui/texture/icons/22_32_23.png"}, "1398": {"iconFile": "res:/ui/texture/icons/22_32_22.png"}, "1397": {"iconFile": "res:/ui/texture/icons/22_32_21.png"}, "1396": {"iconFile": "res:/ui/texture/icons/22_32_20.png"}, "1395": {"iconFile": "res:/ui/texture/icons/22_32_19.png"}, "10793": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4191_male_TopMiddle_TanktopM01_Types_TanktopM01_black.png"}, "1393": {"iconFile": "res:/ui/texture/icons/22_32_17.png"}, "1392": {"iconFile": "res:/ui/texture/icons/22_32_16.png"}, "1391": {"iconFile": "res:/ui/texture/icons/22_32_15.png"}, "1390": {"iconFile": "res:/ui/texture/icons/22_32_14.png"}, "21138": {"iconFile": "res:/UI/Asset/mannequin/outer/33734_female_Outer_JacketSLF_01_Types_JacketSLF_01_blackv1.png"}, "21139": {"iconFile": "res:/UI/Asset/mannequin/outer/33735_female_Outer_JacketSLF_01_Types_JacketSLF_01_blue.png"}, "21130": {"iconFile": "res:/UI/Asset/mannequin/outer/33728_female_Outer_JacketALF_01_Types_JacketALF_01_bluesilver.png"}, "21131": {"iconFile": "res:/UI/Asset/mannequin/outer/33727_female_Outer_JacketALF_01_Types_JacketALF_01_brownpattern.png"}, "21132": {"iconFile": "res:/UI/Asset/mannequin/outer/33715_female_Outer_JacketALF_01_Types_JacketALF_01_creamgold.png"}, "21133": {"iconFile": "res:/UI/Asset/mannequin/outer/33729_female_Outer_JacketALF_01_Types_JacketALF_01_darkgreen.png"}, "21134": {"iconFile": "res:/UI/Asset/mannequin/outer/33730_female_Outer_JacketALF_01_Types_JacketALF_01_darkredgun.png"}, "21135": {"iconFile": "res:/UI/Asset/mannequin/outer/33731_female_Outer_JacketALF_01_Types_JacketALF_01_greengold.png"}, "21136": {"iconFile": "res:/UI/Asset/mannequin/outer/33732_female_Outer_JacketALF_01_Types_JacketALF_01_redsilver.png"}, "21137": {"iconFile": "res:/UI/Asset/mannequin/outer/33733_female_Outer_JacketSLF_01_Types_JacketSLF_01_black.png"}, "2183": {"iconFile": "res:/ui/texture/icons/37_64_7.png"}, "2182": {"iconFile": "res:/ui/texture/icons/37_64_6.png"}, "2181": {"iconFile": "res:/ui/texture/icons/37_64_5.png"}, "2180": {"iconFile": "res:/ui/texture/icons/37_64_4.png"}, "2187": {"iconFile": "res:/ui/texture/icons/37_64_11.png"}, "2186": {"iconFile": "res:/ui/texture/icons/37_64_10.png"}, "2185": {"iconFile": "res:/ui/texture/icons/37_64_9.png"}, "2184": {"iconFile": "res:/ui/texture/icons/37_64_8.png"}, "2189": {"iconFile": "res:/ui/texture/icons/37_64_13.png"}, "2188": {"iconFile": "res:/ui/texture/icons/37_64_12.png"}, "2213": {"iconFile": "res:/ui/texture/icons/40_64_5.png"}, "2212": {"iconFile": "res:/ui/texture/icons/40_64_4.png"}, "2211": {"iconFile": "res:/ui/texture/icons/40_64_3.png"}, "2210": {"iconFile": "res:/ui/texture/icons/40_64_2.png"}, "2217": {"iconFile": "res:/ui/texture/icons/40_64_9.png"}, "2216": {"iconFile": "res:/ui/texture/icons/40_64_8.png"}, "2215": {"iconFile": "res:/ui/texture/icons/40_64_7.png"}, "2214": {"iconFile": "res:/ui/texture/icons/40_64_6.png"}, "2219": {"iconFile": "res:/ui/texture/icons/40_64_11.png"}, "2218": {"iconFile": "res:/ui/texture/icons/40_64_10.png"}, "21620": {"iconFile": "res:/UI/Texture/Icons/Inventory/serpentisContainerBronze_64.png"}, "21621": {"iconFile": "res:/UI/Texture/Icons/Inventory/serpentisContainerSilver_64.png"}, "21622": {"iconFile": "res:/UI/Texture/Icons/Inventory/serpentisContainerGold_64.png"}, "21418": {"iconFile": "res:/ui/texture/icons/99_64_11.png"}, "10178": {"iconFile": "res:/ui/texture/icons/45_64_1.png"}, "10172": {"iconFile": "res:/ui/texture/icons/44_32_4.png"}, "10173": {"iconFile": "res:/ui/texture/icons/45_64_3.png"}, "10174": {"iconFile": "res:/ui/texture/icons/45_64_2.png"}, "10175": {"iconFile": "res:/ui/texture/icons/44_32_3.png"}, "10176": {"iconFile": "res:/ui/texture/icons/36_64_2.png"}, "10177": {"iconFile": "res:/ui/texture/icons/44_32_2.png"}, "21246": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34036_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_BlueWhite.png"}, "21247": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34037_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_WhiteGrayMech.png"}, "21244": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34034_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_BlackYellow.png"}, "21245": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34035_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_BlueBlackShinyMech.png"}, "21242": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34032_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_BlackOrangeMech.png"}, "21243": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34033_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_BlackShinyMech.png"}, "21240": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34005_male_tattoo_armleft_sleeve15__.png"}, "10940": {"iconFile": "res:/ui/texture/icons/107_64_1.png"}, "21248": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34038_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_BlackOrange.png"}, "21249": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34039_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_BlackRed.png"}, "10562": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightGray.png"}, "21394": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34357_female_bottomOuter_PantsPrtF01_Types_PantsPrtF01_bloodraiders.png"}, "21395": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34358_female_bottomOuter_PantsPrtF01_Types_PantsPrtF01_sansha.png"}, "21396": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34359_female_bottomOuter_PantsPrtF01_Types_PantsPrtF01_guristas.png"}, "21397": {"iconFile": "res:/UI/Asset/mannequin/feet/34360_male_Feet_BootsPrtm01_Types_BootsPrtm01_bloodraiders.png"}, "10776": {"iconFile": "res:/UI/Asset/mannequin/outer/4235_male_outer_JacketMilM02_Types_JacketMilM02_matgraphite.png"}, "10777": {"iconFile": "res:/UI/Asset/mannequin/outer/4236_male_outer_JacketMilM02_Types_JacketMilM02_matgray.png"}, "21392": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34355_male_bottomOuter_PantsPrtm01_Types_PantsPrtm01_sansha.png"}, "10775": {"iconFile": "res:/UI/Asset/mannequin/outer/4234_male_outer_JacketMilM02_Types_JacketMilM02_greengold.png"}, "10778": {"iconFile": "res:/UI/Asset/mannequin/outer/4237_male_outer_JacketMilM02_Types_JacketMilM02_matgreen.png"}, "10779": {"iconFile": "res:/UI/Asset/mannequin/outer/4238_male_outer_JacketMilM02_Types_JacketMilM02_redgold.png"}, "21398": {"iconFile": "res:/UI/Asset/mannequin/feet/34361_male_Feet_BootsPrtm01_Types_BootsPrtm01_sansha.png"}, "21399": {"iconFile": "res:/UI/Asset/mannequin/feet/34362_male_Feet_BootsPrtm01_Types_BootsPrtm01_guristas.png"}, "10569": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4017_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackbluegold.png"}, "3258": {"iconFile": "res:/ui/texture/icons/69_64_9.png"}, "3259": {"iconFile": "res:/ui/texture/icons/69_64_10.png"}, "10568": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4016_female_bottomOuter_PantsMilF01_Types_PantsMilF01_black.png"}, "21408": {"iconFile": "res:/ui/texture/icons/118_64_1.png"}, "21409": {"iconFile": "res:/ui/texture/icons/119_64_1.png"}, "3250": {"iconFile": "res:/ui/texture/icons/69_64_1.png"}, "3251": {"iconFile": "res:/ui/texture/icons/69_64_2.png"}, "3252": {"iconFile": "res:/ui/texture/icons/69_64_3.png"}, "3253": {"iconFile": "res:/ui/texture/icons/69_64_4.png"}, "3254": {"iconFile": "res:/ui/texture/icons/69_64_5.png"}, "3255": {"iconFile": "res:/ui/texture/icons/69_64_6.png"}, "3256": {"iconFile": "res:/ui/texture/icons/69_64_7.png"}, "3257": {"iconFile": "res:/ui/texture/icons/69_64_8.png"}, "0": {"iconFile": "res:/ui/texture/icons/7_64_15.png"}, "2859": {"iconFile": "res:/ui/texture/icons/54_64_1.png"}, "2858": {"iconFile": "res:/ui/texture/icons/53_64_16.png"}, "21434": {"iconFile": "res:/UI/Texture/WindowIcons/cloneBay.png"}, "2851": {"iconFile": "res:/ui/texture/icons/53_64_9.png"}, "2850": {"iconFile": "res:/ui/texture/icons/53_64_8.png"}, "2853": {"iconFile": "res:/ui/texture/icons/53_64_11.png"}, "2852": {"iconFile": "res:/ui/texture/icons/53_64_10.png"}, "2855": {"iconFile": "res:/ui/texture/icons/53_64_13.png"}, "2854": {"iconFile": "res:/ui/texture/icons/53_64_12.png"}, "2857": {"iconFile": "res:/ui/texture/icons/53_64_15.png"}, "2856": {"iconFile": "res:/ui/texture/icons/53_64_14.png"}, "1490": {"iconFile": "res:/ui/texture/corps/15_128_4.png"}, "1491": {"iconFile": "res:/ui/texture/corps/17_128_3.png"}, "1492": {"iconFile": "res:/ui/texture/corps/13_128_3.png"}, "1620": {"iconFile": "res:/ui/texture/corps/6_128_4.png"}, "1494": {"iconFile": "res:/ui/texture/corps/18_128_4.png"}, "1495": {"iconFile": "res:/ui/texture/corps/14_128_4.png"}, "1496": {"iconFile": "res:/ui/texture/corps/17_128_1.png"}, "1497": {"iconFile": "res:/ui/texture/corps/18_128_2.png"}, "1498": {"iconFile": "res:/ui/texture/corps/16_128_3.png"}, "1499": {"iconFile": "res:/ui/texture/corps/15_128_1.png"}, "3339": {"iconFile": "res:/ui/texture/icons/74_64_1.png"}, "3338": {"iconFile": "res:/ui/texture/icons/72_64_15.png"}, "10208": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4078_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Camo.png"}, "1626": {"iconFile": "res:/ui/texture/corps/20_128_4.png"}, "1700": {"iconFile": "res:/ui/texture/icons/9_64_1.png"}, "21080": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/33549_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_WhiteGray.png"}, "1394": {"iconFile": "res:/ui/texture/icons/22_32_18.png"}, "10192": {"iconFile": "res:/ui/texture/corps/45_128_4.png"}, "1625": {"iconFile": "res:/ui/texture/corps/20_128_1.png"}, "10190": {"iconFile": "res:/ui/texture/icons/79_64_13.png"}, "10191": {"iconFile": "res:/ui/texture/corps/46_128_2.png"}, "1624": {"iconFile": "res:/ui/texture/corps/20_128_3.png"}, "21168": {"iconFile": "res:/UI/Asset/mannequin/feet/33773_male_Feet_BootsCLM01_Types_BootsCLM01_Brown.png"}, "10099": {"iconFile": "res:/ui/texture/icons/97_64_4.png"}, "10098": {"iconFile": "res:/ui/texture/icons/97_64_3.png"}, "21086": {"iconFile": "res:/UI/Texture/Icons/icons111_09.png"}, "2989": {"iconFile": "res:/ui/texture/icons/56_64_7.png"}, "2988": {"iconFile": "res:/ui/texture/icons/56_64_6.png"}, "3029": {"iconFile": "res:/ui/texture/icons/58_64_6.png"}, "3028": {"iconFile": "res:/ui/texture/icons/58_64_5.png"}, "2983": {"iconFile": "res:/ui/texture/icons/56_64_1.png"}, "3026": {"iconFile": "res:/ui/texture/icons/58_64_3.png"}, "3025": {"iconFile": "res:/ui/texture/icons/58_64_2.png"}, "3024": {"iconFile": "res:/ui/texture/icons/59_128_4.png"}, "2987": {"iconFile": "res:/ui/texture/icons/56_64_5.png"}, "2986": {"iconFile": "res:/ui/texture/icons/56_64_4.png"}, "2985": {"iconFile": "res:/ui/texture/icons/56_64_3.png"}, "3311": {"iconFile": "res:/ui/texture/icons/71_64_5.png"}, "10097": {"iconFile": "res:/ui/texture/icons/97_64_2.png"}, "3805": {"iconFile": "res:/UI/netres/mission_content/arc_gallente.png"}, "3804": {"iconFile": "res:/UI/netres/mission_content/arc_caldari.png"}, "3807": {"iconFile": "res:/UI/netres/mission_content/blood_stained.png"}, "3806": {"iconFile": "res:/UI/netres/mission_content/arc_minmatar.png"}, "3801": {"iconFile": "res:/UI/netres/mission_content/agent_interaction.png"}, "3803": {"iconFile": "res:/UI/netres/mission_content/arc_amarr.png"}, "3802": {"iconFile": "res:/UI/netres/mission_content/agent_talkto.png"}, "3315": {"iconFile": "res:/ui/texture/icons/71_64_9.png"}, "3314": {"iconFile": "res:/ui/texture/icons/71_64_8.png"}, "3316": {"iconFile": "res:/ui/texture/icons/71_64_10.png"}, "21420": {"iconFile": "res:/UI/Texture/Icons/skin-icon-16.png"}, "230": {"iconFile": "res:/ui/texture/icons/24_64_2.png"}, "231": {"iconFile": "res:/ui/texture/icons/23_64_16.png"}, "232": {"iconFile": "res:/ui/texture/icons/24_64_1.png"}, "2228": {"iconFile": "res:/ui/texture/icons/41_64_7.png"}, "2229": {"iconFile": "res:/ui/texture/icons/41_64_9.png"}, "2226": {"iconFile": "res:/ui/texture/icons/41_64_2.png"}, "2227": {"iconFile": "res:/ui/texture/icons/41_64_5.png"}, "2224": {"iconFile": "res:/ui/texture/icons/40_64_16.png"}, "2225": {"iconFile": "res:/ui/texture/icons/41_64_1.png"}, "2222": {"iconFile": "res:/ui/texture/icons/40_64_14.png"}, "2223": {"iconFile": "res:/ui/texture/icons/40_64_15.png"}, "2220": {"iconFile": "res:/ui/texture/icons/40_64_12.png"}, "2221": {"iconFile": "res:/ui/texture/icons/40_64_13.png"}, "10835": {"iconFile": "res:/UI/Texture/Icons/ComprFuel_Amarr.png"}, "10834": {"iconFile": "res:/UI/Texture/Icons/ComprFuel_Caldari.png"}, "10836": {"iconFile": "res:/UI/Texture/Icons/ComprFuel_Minmatar.png"}, "10831": {"iconFile": "res:/UI/Texture/Icons/aurcoin.png"}, "10830": {"iconFile": "res:/UI/Texture/market/apparel_womens_outer_4054_1011.png"}, "10833": {"iconFile": "res:/UI/Texture/Icons/ComprFuel_Gallente.png"}, "21264": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34026_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_BlackYellow.png"}, "10838": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4009_female_Accessories_Glasses_Monocle_01_Types_MonocleF01_RightGold.png"}, "999": {"iconFile": "res:/ui/texture/icons/9_64_11.png"}, "998": {"iconFile": "res:/ui/texture/icons/9_64_9.png"}, "21097": {"iconFile": "res:/ui/texture/icons/107_64_16.png"}, "21096": {"iconFile": "res:/ui/texture/icons/107_64_13.png"}, "21095": {"iconFile": "res:/ui/texture/icons/107_64_14.png"}, "21094": {"iconFile": "res:/UI/Texture/Corps/republic_command.png"}, "21093": {"iconFile": "res:/UI/Texture/Corps/federal_marines.png"}, "21092": {"iconFile": "res:/UI/Texture/Corps/state_peacekeepers.png"}, "21090": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33578_male_TopMiddle_ShirtQM01_Types_soerfm01.png"}, "21348": {"iconFile": "res:/UI/Asset/mannequin/outer/34157_male_outer_JacketMFBR01_Types_JacketMFBR01_Amarr.png"}, "21098": {"iconFile": "res:/ui/texture/icons/107_64_15.png"}, "2088": {"iconFile": "res:/Texture/Landmark/traumark.jpg"}, "2089": {"iconFile": "res:/Texture/Landmark/venal.jpg"}, "2082": {"iconFile": "res:/Texture/Landmark/myridianstrip.jpg"}, "2083": {"iconFile": "res:/Texture/Landmark/outerring.jpg"}, "2080": {"iconFile": "res:/Texture/Landmark/khanidkingdom.jpg"}, "2081": {"iconFile": "res:/Texture/Landmark/minmatar.jpg"}, "2086": {"iconFile": "res:/Texture/Landmark/stain.jpg"}, "2087": {"iconFile": "res:/Texture/Landmark/thesyndicate.jpg"}, "2084": {"iconFile": "res:/Texture/Landmark/pointofnoreturn.jpg"}, "2085": {"iconFile": "res:/Texture/Landmark/serpentscoil.jpg"}, "3342": {"iconFile": "res:/ui/texture/icons/74_64_4.png"}, "2538": {"iconFile": "res:/ui/texture/icons/46_64_3.png"}, "2539": {"iconFile": "res:/ui/texture/icons/46_64_4.png"}, "21266": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34028_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_GreenCamo.png"}, "3343": {"iconFile": "res:/ui/texture/icons/74_64_5.png"}, "2532": {"iconFile": "res:/ui/texture/icons/45_64_13.png"}, "2533": {"iconFile": "res:/ui/texture/icons/45_64_14.png"}, "2530": {"iconFile": "res:/ui/texture/icons/45_64_11.png"}, "2531": {"iconFile": "res:/ui/texture/icons/45_64_12.png"}, "2536": {"iconFile": "res:/ui/texture/icons/46_64_1.png"}, "2537": {"iconFile": "res:/ui/texture/icons/46_64_2.png"}, "2534": {"iconFile": "res:/ui/texture/icons/45_64_15.png"}, "2535": {"iconFile": "res:/ui/texture/icons/45_64_16.png"}, "3341": {"iconFile": "res:/ui/texture/icons/74_64_3.png"}, "3346": {"iconFile": "res:/ui/texture/icons/74_64_8.png"}, "3347": {"iconFile": "res:/ui/texture/icons/74_64_9.png"}, "10699": {"iconFile": "res:/UI/Asset/mannequin/topouter/4162_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_matolive.png"}, "10698": {"iconFile": "res:/UI/Asset/mannequin/topouter/4161_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_matblue.png"}, "21271": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/33989_female_bottomMiddle_TightsF01_Types_TightsF01_black.png"}, "21270": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/33993_female_Accessories_Glasses_Monocle_F_T02_Types_Monocle_F_T02_black_left.png"}, "21277": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34051_female_bottomMiddle_TightsF01_Types_TightsF01_thickgray.png"}, "21276": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34049_female_bottomMiddle_TightsF01_Types_TightsF01_thickblack.png"}, "21275": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34048_female_bottomMiddle_TightsF01_Types_TightsF01_red.png"}, "21265": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34027_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_BlueWhite.png"}, "10691": {"iconFile": "res:/UI/Asset/mannequin/topouter/4062_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_blue.png"}, "10690": {"iconFile": "res:/UI/Asset/mannequin/topouter/4156_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_blackwhite.png"}, "10693": {"iconFile": "res:/UI/Asset/mannequin/topouter/4157_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_gold.png"}, "10692": {"iconFile": "res:/UI/Asset/mannequin/topouter/4063_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_dust.png"}, "10695": {"iconFile": "res:/UI/Asset/mannequin/topouter/4159_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_greensatin.png"}, "10694": {"iconFile": "res:/UI/Asset/mannequin/topouter/4158_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_graphite.png"}, "10697": {"iconFile": "res:/UI/Asset/mannequin/topouter/4160_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_matblack.png"}, "10696": {"iconFile": "res:/UI/Asset/mannequin/topouter/4065_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_lightgrey.png"}, "21267": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34029_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_GreenYellow.png"}, "21260": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34022_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_BlueWhite.png"}, "21261": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34023_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_WhiteGrayMech.png"}, "21262": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34024_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_BlackOrange.png"}, "10749": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Monocle_01_Types_MonocleM01_RightGray.png"}, "10748": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Monocle_01_Types_MonocleM01_RightGold.png"}, "10747": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Monocle_01_Types_MonocleM01_LefttGray.png"}, "10746": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Monocle_01_Types_MonocleM01_LeftGold.png"}, "10745": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Goggles_01_Types_goggles_01.png"}, "21263": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34025_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_BlackRed.png"}, "10743": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_RightGold.png"}, "10742": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_RightDark.png"}, "10741": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_LeftGray.png"}, "10740": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_LeftGold.png"}, "21562": {"iconFile": "res:/ui/texture/icons/123_64_7.png"}, "21401": {"iconFile": "res:/UI/Asset/mannequin/feet/34364_female_Feet_BootsPrtF01_Types_BootsPrtF01_sansha.png"}, "21300": {"iconFile": "res:/UI/Asset/mannequin/feet/34085_female_Feet_SpaceBoots01F_Types_spaceboots01f_red.png"}, "21479": {"iconFile": "res:/UI/Asset/mannequin/feet/36515_female_Feet_ShoesEngF01_Types_ShoesEngF01_OreGreen.png"}, "21478": {"iconFile": "res:/UI/Asset/mannequin/feet/36514_female_Feet_ShoesEngF01_Types_ShoesEngF01_Cyan.png"}, "3249": {"iconFile": "res:/ui/texture/icons/68_64_8.png"}, "3248": {"iconFile": "res:/ui/texture/icons/68_64_7.png"}, "3370": {"iconFile": "res:/ui/texture/corps/47_128_2.png"}, "3243": {"iconFile": "res:/ui/texture/icons/64_64_14.png"}, "3242": {"iconFile": "res:/ui/texture/icons/64_64_13.png"}, "3241": {"iconFile": "res:/ui/texture/icons/64_64_12.png"}, "3240": {"iconFile": "res:/ui/texture/icons/64_64_11.png"}, "3247": {"iconFile": "res:/ui/texture/icons/68_64_6.png"}, "3246": {"iconFile": "res:/ui/texture/icons/68_64_5.png"}, "3245": {"iconFile": "res:/ui/texture/icons/64_64_16.png"}, "3244": {"iconFile": "res:/ui/texture/icons/64_64_15.png"}, "21124": {"iconFile": "res:/UI/Asset/mannequin/feet/33721_female_Feet_BootsSLF_01_Types_BootsSLF_01_blue.png"}, "21428": {"iconFile": "res:/UI/Texture/Icons/remote_hull_repairer.png"}, "1483": {"iconFile": "res:/ui/texture/corps/16_128_1.png"}, "10232": {"iconFile": "res:/UI/Asset/mannequin/hair_4088_949.png"}, "10231": {"iconFile": "res:/UI/Asset/mannequin/hair_4086_947.png"}, "1480": {"iconFile": "res:/ui/texture/corps/15_128_2.png"}, "1487": {"iconFile": "res:/ui/texture/corps/17_128_4.png"}, "1486": {"iconFile": "res:/ui/texture/corps/19_128_1.png"}, "1485": {"iconFile": "res:/ui/texture/corps/17_128_2.png"}, "10234": {"iconFile": "res:/UI/Asset/mannequin/outer/4054_female_Outer_JacketMilF01_Types_JacketMilF01_blackgray.png"}, "3306": {"iconFile": "res:/ui/texture/icons/70_64_16.png"}, "3307": {"iconFile": "res:/ui/texture/icons/71_64_1.png"}, "10239": {"iconFile": "res:/UI/Asset/mannequin/topouter/4057_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_black.png"}, "10238": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4067_male_TopMiddle_ShirtQM01_Types_shirtqm01.png"}, "3302": {"iconFile": "res:/ui/texture/icons/70_64_12.png"}, "3303": {"iconFile": "res:/ui/texture/icons/70_64_13.png"}, "3300": {"iconFile": "res:/ui/texture/icons/70_64_10.png"}, "3301": {"iconFile": "res:/ui/texture/icons/70_64_11.png"}, "21505": {"iconFile": "res:/UI/Asset/mannequin/outer/37806_female_Outer_JacketFBR01_Types_JacketFBR01_concord.png"}, "21504": {"iconFile": "res:/UI/Asset/mannequin/outer/37817_male_outer_JacketALM01_Types_JacketALM01_PurpleGold.png"}, "21507": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/37808_female_TopMiddle_ShirtQF01_Types_ShirtQF01_Concord.png"}, "21506": {"iconFile": "res:/UI/Asset/mannequin/outer/37807_male_outer_JacketCLM01_Types_JacketCLM01_Concord.png"}, "21501": {"iconFile": "res:/UI/Asset/mannequin/outer/37818_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_Blue.png"}, "21500": {"iconFile": "res:/UI/Asset/mannequin/outer/37815_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_SOERed.png"}, "21503": {"iconFile": "res:/UI/Asset/mannequin/outer/37816_female_Outer_JacketSLF_01_Types_JacketSLF_01_redcicles.png"}, "21502": {"iconFile": "res:/UI/Asset/mannequin/outer/37864_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_BlueWhite.png"}, "21509": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/37865_female_TopMiddle_ShirtCF01_Types_ShirtF01_Serpentis.png"}, "21508": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/37809_male_topMiddle_ShirtQM01_Types_ShirtQM01_Concord.png"}, "1139": {"iconFile": "res:/ui/texture/icons/8_64_2.png"}, "1131": {"iconFile": "res:/ui/texture/icons/8_64_1.png"}, "2060": {"iconFile": "res:/ui/texture/icons/31_64_14.png"}, "10618": {"iconFile": "res:/UI/Asset/mannequin/feet/4122_female_Feet_BootsMilF01_Types_BootsMilF01_matblack.png"}, "10852": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_default.png"}, "3019": {"iconFile": "res:/ui/texture/icons/58_64_1.png"}, "3012": {"iconFile": "res:/ui/texture/icons/57_64_15.png"}, "3013": {"iconFile": "res:/ui/texture/icons/57_64_16.png"}, "3010": {"iconFile": "res:/ui/texture/icons/57_64_13.png"}, "3011": {"iconFile": "res:/ui/texture/icons/57_64_14.png"}, "3308": {"iconFile": "res:/ui/texture/icons/71_64_2.png"}, "1007": {"iconFile": "res:/ui/texture/icons/21_64_8.png"}, "1004": {"iconFile": "res:/ui/texture/icons/14_64_1.png"}, "1002": {"iconFile": "res:/ui/texture/icons/9_64_8.png"}, "1001": {"iconFile": "res:/ui/texture/icons/9_64_10.png"}, "10205": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3997_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackgray.png"}, "3309": {"iconFile": "res:/ui/texture/icons/71_64_3.png"}, "2882": {"iconFile": "res:/ui/texture/icons/55_64_8.png"}, "2883": {"iconFile": "res:/ui/texture/icons/55_64_9.png"}, "2880": {"iconFile": "res:/ui/texture/icons/55_64_6.png"}, "2881": {"iconFile": "res:/ui/texture/icons/55_64_7.png"}, "2886": {"iconFile": "res:/ui/texture/icons/55_64_12.png"}, "2887": {"iconFile": "res:/ui/texture/icons/55_64_13.png"}, "2884": {"iconFile": "res:/ui/texture/icons/55_64_10.png"}, "2885": {"iconFile": "res:/ui/texture/icons/55_64_11.png"}, "2888": {"iconFile": "res:/ui/texture/icons/55_64_14.png"}, "2889": {"iconFile": "res:/ui/texture/icons/55_64_15.png"}, "21435": {"iconFile": "res:/UI/Texture/WindowIcons/repairshop.png"}, "15": {"iconFile": "res:/ui/texture/icons/5_64_11.png"}, "3304": {"iconFile": "res:/ui/texture/icons/70_64_14.png"}, "16": {"iconFile": "res:/ui/texture/icons/26_64_11.png"}, "3718": {"iconFile": "res:/ui/texture/icons/76_64_15.png"}, "3194": {"iconFile": "res:/ui/texture/icons/68_64_10.png"}, "3305": {"iconFile": "res:/ui/texture/icons/70_64_15.png"}, "21437": {"iconFile": "res:/UI/Texture/Icons/5_64_17.png"}, "21585": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41047_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V1_.png"}, "21584": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41051_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V3_.png"}, "3193": {"iconFile": "res:/ui/texture/icons/68_64_9.png"}, "21586": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41052_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V1_.png"}, "21581": {"iconFile": "res:/UI/Texture/Icons/125_64_1.png"}, "21583": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41050_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V4_.png"}, "3192": {"iconFile": "res:/ui/texture/icons/63_64_12.png"}, "21431": {"iconFile": "res:/UI/Texture/WindowIcons/fitting.png"}, "21430": {"iconFile": "res:/UI/Texture/classes/Sov/stationServiceResearch.png"}, "2231": {"iconFile": "res:/ui/texture/icons/41_64_11.png"}, "2230": {"iconFile": "res:/ui/texture/icons/41_64_10.png"}, "2233": {"iconFile": "res:/ui/texture/icons/41_64_6.png"}, "2232": {"iconFile": "res:/ui/texture/icons/41_64_12.png"}, "2234": {"iconFile": "res:/ui/texture/icons/41_64_8.png"}, "10826": {"iconFile": "res:/UI/Asset/mannequin/topouter/4065_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_lightgrey.png"}, "10827": {"iconFile": "res:/UI/Asset/mannequin/topouter/4068_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_ishukone.png"}, "10824": {"iconFile": "res:/UI/Asset/mannequin/topouter/4063_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_dust.png"}, "10825": {"iconFile": "res:/UI/Asset/mannequin/topouter/4064_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_olive.png"}, "10822": {"iconFile": "res:/UI/Asset/mannequin/topouter/4061_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_black.png"}, "10823": {"iconFile": "res:/UI/Asset/mannequin/topouter/4062_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_blue.png"}, "10820": {"iconFile": "res:/UI/Asset/mannequin/topouter/4059_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_dust.png"}, "10821": {"iconFile": "res:/UI/Asset/mannequin/topouter/4060_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_olive.png"}, "10828": {"iconFile": "res:/UI/Texture/market/apparel_accessories_glasses_3958_1065.png"}, "10829": {"iconFile": "res:/UI/Texture/market/apparel_mens_topouter_4058_1000.png"}, "21433": {"iconFile": "res:/UI/Texture/WindowIcons/Industry.png"}, "2095": {"iconFile": "res:/ui/texture/icons/35_64_7.png"}, "2094": {"iconFile": "res:/ui/texture/icons/35_64_6.png"}, "21082": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/33552_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_White.png"}, "2096": {"iconFile": "res:/ui/texture/icons/35_64_9.png"}, "21084": {"iconFile": "res:/UI/Texture/Icons/icons111_07.png"}, "21085": {"iconFile": "res:/UI/Texture/Icons/icons111_08.png"}, "2093": {"iconFile": "res:/ui/texture/icons/35_64_5.png"}, "21089": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33579_female_TopMiddle_ShirtQF01_Types_soerff01.png"}, "2527": {"iconFile": "res:/ui/texture/icons/49_64_5.png"}, "2526": {"iconFile": "res:/ui/texture/icons/49_64_6.png"}, "2529": {"iconFile": "res:/ui/texture/icons/45_64_10.png"}, "2528": {"iconFile": "res:/ui/texture/icons/45_64_9.png"}, "20988": {"iconFile": "res:/UI/Texture/Corps/osmon_surveillance.png"}, "2705": {"iconFile": "res:/ui/texture/icons/50_64_16.png"}, "20989": {"iconFile": "res:/UI/Texture/Corps/royal_uhlans.png"}, "2701": {"iconFile": "res:/ui/texture/icons/51_64_15.png"}, "2700": {"iconFile": "res:/ui/texture/icons/51_64_14.png"}, "2703": {"iconFile": "res:/ui/texture/icons/9_64_15.png"}, "2702": {"iconFile": "res:/ui/texture/icons/51_64_16.png"}, "21114": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33758_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_orangegloss.png"}, "10688": {"iconFile": "res:/UI/Asset/mannequin/topouter/4061_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_black.png"}, "10689": {"iconFile": "res:/UI/Asset/mannequin/topouter/4155_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_blackleather.png"}, "21268": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34030_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_Gunmetal.png"}, "21269": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/33992_female_Accessories_Glasses_Monocle_01_Types_MonocleF01_RightBlack.png"}, "10682": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4227_female_TopMiddle_TanktopF01_Types_TanktopF01_p05.png"}, "10683": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4228_female_TopMiddle_TanktopF01_Types_TanktopF01_p06.png"}, "10680": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4225_female_TopMiddle_TanktopF01_Types_TanktopF01_p03.png"}, "10681": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4226_female_TopMiddle_TanktopF01_Types_TanktopF01_p04.png"}, "10686": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4231_female_TopMiddle_TanktopF01_Types_TanktopF01_red.png"}, "10687": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4232_female_TopMiddle_TanktopF01_Types_TanktopF01_white.png"}, "10684": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4229_female_TopMiddle_TanktopF01_Types_TanktopF01_p07.png"}, "10685": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4230_female_TopMiddle_TanktopF01_Types_TanktopF01_p08.png"}, "21279": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34054_female_bottomMiddle_TightsF01_Types_TightsF01_white.png"}, "21115": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33759_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_red.png"}, "10758": {"iconFile": "res:/UI/Asset/mannequin/Male_Feet_BootsMilM01_Types_BootsMilM01_black.png"}, "10759": {"iconFile": "res:/UI/Asset/mannequin/feet/4172_male_Feet_BootsMilM01_Types_BootsMilM01_trueblack.png"}, "20980": {"iconFile": "res:/UI/Texture/Corps/algintal_core.png"}, "10750": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4165_male_bottomOuter_PantsMilM01_Types_PantsMilM01_black.png"}, "10751": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3992_male_bottomOuter_PantsMilM01_Types_PantsMilM01_blackwaxed.png"}, "10752": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4166_male_bottomOuter_PantsMilM01_Types_PantsMilM01_blue.png"}, "20981": {"iconFile": "res:/UI/Texture/Corps/amarr_templars.png"}, "10754": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4168_male_bottomOuter_PantsMilM01_Types_PantsMilM01_grayblack.png"}, "10755": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4169_male_bottomOuter_PantsMilM01_Types_PantsMilM01_p_browncamo.png"}, "10756": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4170_male_bottomOuter_PantsMilM01_Types_PantsMilM01_p_greencamo.png"}, "10757": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4171_male_bottomOuter_PantsMilM01_Types_PantsMilM01_redblack.png"}, "20939": {"iconFile": "res:/ui/texture/icons/108_64_5.png"}, "3278": {"iconFile": "res:/ui/texture/icons/70_64_5.png"}, "3279": {"iconFile": "res:/ui/texture/icons/70_64_8.png"}, "21468": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36504_female_bottomOuter_PantsEngF01_Types_PantsEngF01_OreOrange.png"}, "21469": {"iconFile": "res:/UI/Asset/mannequin/feet/36505_male_Feet_ShoesEngM01_Types_ShoesEngM01_blueorange.png"}, "3333": {"iconFile": "res:/ui/texture/icons/72_64_10.png"}, "21463": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36499_female_bottomOuter_PantsEngF01_Types_PantsEngF01_BlueOrange.png"}, "21460": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36496_male_bottomOuter_PantsEngM01_Types_PantsEngM01_cyan.png"}, "21461": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36497_male_bottomOuter_PantsEngM01_Types_PantsEngM01_oregreen.png"}, "21466": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36502_female_bottomOuter_PantsEngF01_Types_PantsEngF01_Cyan.png"}, "21467": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36503_female_bottomOuter_PantsEngF01_Types_PantsEngF01_OreGreen.png"}, "21464": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36500_female_bottomOuter_PantsEngF01_Types_PantsEngF01_RedWhite.png"}, "21465": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36501_female_bottomOuter_PantsEngF01_Types_PantsEngF01_Camo.png"}, "3199": {"iconFile": "res:/ui/texture/icons/68_64_15.png"}, "3319": {"iconFile": "res:/ui/texture/icons/71_64_13.png"}, "3318": {"iconFile": "res:/ui/texture/icons/71_64_12.png"}, "10224": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4052_female_Accessories_Glasses_Monocle_01_Types_MonocleF01_LeftGray.png"}, "3310": {"iconFile": "res:/ui/texture/icons/71_64_4.png"}, "3313": {"iconFile": "res:/ui/texture/icons/71_64_7.png"}, "3312": {"iconFile": "res:/ui/texture/icons/71_64_6.png"}, "10220": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4043_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftDark.png"}, "10221": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4046_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftGold.png"}, "10222": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4048_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftGray.png"}, "10223": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4050_female_Accessories_Glasses_Monocle_01_Types_MonocleF01_LeftGold.png"}, "21517": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/40526_male_topMiddle_ShirtQM01_Types_shirtqm01_upwell.png"}, "21514": {"iconFile": "res:/UI/Asset/mannequin/outer/40522_male_outer_JacketMilM02_Types_JacketMilM02_upwell.png"}, "21515": {"iconFile": "res:/UI/Asset/mannequin/outer/40523_female_Outer_JacketMilF01_Types_JacketMilF01_upwell.png"}, "21512": {"iconFile": "res:/UI/Texture/classes/Fitting/stationServiceSlot.png"}, "21513": {"iconFile": "res:/ui/texture/icons/118_64_12.png"}, "21510": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/37866_male_topMiddle_ShirtCM01_Types_ShirtM01_Serpentis.png"}, "1724": {"iconFile": "res:/ui/texture/icons/33_128_2.png"}, "1722": {"iconFile": "res:/ui/texture/icons/34_64_2.png"}, "1723": {"iconFile": "res:/ui/texture/icons/27_64_9.png"}, "1720": {"iconFile": "res:/ui/texture/icons/27_64_4.png"}, "1721": {"iconFile": "res:/ui/texture/icons/34_64_1.png"}, "3330": {"iconFile": "res:/ui/texture/icons/72_64_9.png"}, "3005": {"iconFile": "res:/ui/texture/icons/57_64_8.png"}, "3004": {"iconFile": "res:/ui/texture/icons/57_64_7.png"}, "3007": {"iconFile": "res:/ui/texture/icons/57_64_10.png"}, "3006": {"iconFile": "res:/ui/texture/icons/57_64_9.png"}, "3001": {"iconFile": "res:/ui/texture/icons/57_64_3.png"}, "3000": {"iconFile": "res:/ui/texture/icons/57_64_2.png"}, "3003": {"iconFile": "res:/ui/texture/icons/57_64_6.png"}, "67": {"iconFile": "res:/ui/texture/icons/2_64_9.png"}, "68": {"iconFile": "res:/ui/texture/icons/1_64_9.png"}, "69": {"iconFile": "res:/ui/texture/icons/1_64_13.png"}, "3009": {"iconFile": "res:/ui/texture/icons/57_64_12.png"}, "3008": {"iconFile": "res:/ui/texture/icons/57_64_11.png"}, "1588": {"iconFile": "res:/ui/texture/corps/3_128_1.png"}, "1589": {"iconFile": "res:/ui/texture/corps/6_128_2.png"}, "1582": {"iconFile": "res:/ui/texture/corps/8_128_1.png"}, "1583": {"iconFile": "res:/ui/texture/corps/1_128_4.png"}, "1580": {"iconFile": "res:/ui/texture/corps/41_128_2.png"}, "1581": {"iconFile": "res:/ui/texture/corps/1_128_3.png"}, "1586": {"iconFile": "res:/ui/texture/corps/39_128_2.png"}, "1587": {"iconFile": "res:/ui/texture/corps/3_128_3.png"}, "1584": {"iconFile": "res:/ui/texture/corps/4_128_4.png"}, "1585": {"iconFile": "res:/ui/texture/corps/38_128_3.png"}, "21487": {"iconFile": "res:/ui/texture/icons/118_64_14.png"}, "3317": {"iconFile": "res:/ui/texture/icons/71_64_11.png"}, "1033": {"iconFile": "res:/ui/texture/icons/1_64_7.png"}, "1030": {"iconFile": "res:/ui/texture/icons/1_64_8.png"}, "1031": {"iconFile": "res:/ui/texture/icons/1_64_6.png"}, "1036": {"iconFile": "res:/ui/texture/icons/2_64_6.png"}, "1035": {"iconFile": "res:/ui/texture/icons/1_64_2.png"}, "1377": {"iconFile": "res:/ui/texture/icons/25_64_1.png"}, "21480": {"iconFile": "res:/UI/Asset/mannequin/feet/36516_female_Feet_ShoesEngF01_Types_ShoesEngF01_OreOrange.png"}, "3335": {"iconFile": "res:/ui/texture/icons/72_64_12.png"}, "2891": {"iconFile": "res:/ui/texture/icons/46_64_12.png"}, "2890": {"iconFile": "res:/ui/texture/icons/55_64_16.png"}, "2893": {"iconFile": "res:/ui/texture/icons/4_64_16.png"}, "1454": {"iconFile": "res:/ui/texture/corps/42_128_4.png"}, "1455": {"iconFile": "res:/ui/texture/corps/10_128_1.png"}, "1456": {"iconFile": "res:/ui/texture/corps/39_128_1.png"}, "1457": {"iconFile": "res:/ui/texture/corps/41_128_4.png"}, "1450": {"iconFile": "res:/ui/texture/corps/43_128_2.png"}, "1451": {"iconFile": "res:/ui/texture/corps/43_128_3.png"}, "1452": {"iconFile": "res:/ui/texture/corps/42_128_1.png"}, "1453": {"iconFile": "res:/ui/texture/corps/10_128_2.png"}, "1458": {"iconFile": "res:/ui/texture/corps/43_128_4.png"}, "1459": {"iconFile": "res:/ui/texture/icons/25_64_5.png"}, "21148": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33767_female_TopMiddle_ShirtQF01_Types_neof2014A.png"}, "21145": {"iconFile": "res:/UI/Asset/mannequin/outer/33741_female_Outer_JacketSLF_01_Types_JacketSLF_01_redv1.png"}, "21518": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/40527_female_TopMiddle_ShirtQF01_Types_shirtqf01_upwell.png"}, "21144": {"iconFile": "res:/UI/Asset/mannequin/outer/33740_female_Outer_JacketSLF_01_Types_JacketSLF_01_movcircles.png"}, "21519": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/40524_male_bottomOuter_PantsMilM01_Types_PantsMilM01_upwell.png"}, "21147": {"iconFile": "res:/UI/Asset/mannequin/outer/33743_female_Outer_JacketSLF_01_Types_JacketSLF_01_whitegreen.png"}, "21146": {"iconFile": "res:/UI/Asset/mannequin/outer/33742_female_Outer_JacketSLF_01_Types_JacketSLF_01_white.png"}, "21141": {"iconFile": "res:/UI/Asset/mannequin/outer/33738_female_Outer_JacketSLF_01_Types_JacketSLF_01_copv1.png"}, "21140": {"iconFile": "res:/UI/Asset/mannequin/outer/33736_female_Outer_JacketSLF_01_Types_JacketSLF_01_coppstars.png"}, "21143": {"iconFile": "res:/UI/Asset/mannequin/outer/33739_female_Outer_JacketSLF_01_Types_JacketSLF_01_green.png"}, "21142": {"iconFile": "res:/UI/Asset/mannequin/outer/33737_female_Outer_JacketSLF_01_Types_JacketSLF_01_darkgrey.png"}, "10813": {"iconFile": "res:/UI/Asset/mannequin/outer/4054_female_Outer_JacketMilF01_Types_JacketMilF01_blackgray.png"}, "10812": {"iconFile": "res:/UI/Asset/mannequin/outer/3975_female_Outer_JacketMilF02_Types_JacketMilF02_blue.png"}, "10811": {"iconFile": "res:/UI/Asset/mannequin/topouter/4243_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_whiteblue.png"}, "10810": {"iconFile": "res:/UI/Asset/mannequin/topouter/4242_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_redblackleather.png"}, "10817": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4067_male_TopMiddle_ShirtQM01_Types_shirtqm01.png"}, "10816": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4066_female_TopMiddle_ShirtQF01_Types_shirtqf01.png"}, "10815": {"iconFile": "res:/UI/Asset/mannequin/outer/4098_male_outer_JacketMilM02_Types_JacketMilM02_blackgray.png"}, "10814": {"iconFile": "res:/UI/Asset/mannequin/outer/4097_male_outer_JacketMilM01_Types_JacketMilM01_blackyellow.png"}, "10819": {"iconFile": "res:/UI/Asset/mannequin/topouter/4058_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_blue.png"}, "10818": {"iconFile": "res:/UI/Asset/mannequin/topouter/4057_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_black.png"}, "21078": {"iconFile": "res:/UI/Asset/mannequin/makeup_armleft/33551_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_White.png"}, "21075": {"iconFile": "res:/ui/texture/icons/109_64_2.png"}, "3646": {"iconFile": "res:/ui/texture/icons/76_64_8.png"}, "21071": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33488_male_TopMiddle_ShirtQM01_Types_lvm01.png"}, "21070": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33487_female_TopMiddle_ShirtQF01_Types_lvf01.png"}, "3641": {"iconFile": "res:/ui/texture/icons/76_64_5.png"}, "2550": {"iconFile": "res:/ui/texture/icons/46_64_16.png"}, "2551": {"iconFile": "res:/ui/texture/icons/43_64_14.png"}, "2552": {"iconFile": "res:/ui/texture/icons/43_64_15.png"}, "2553": {"iconFile": "res:/ui/texture/icons/43_64_16.png"}, "2554": {"iconFile": "res:/ui/texture/icons/51_64_5.png"}, "2555": {"iconFile": "res:/ui/texture/icons/51_64_4.png"}, "2556": {"iconFile": "res:/ui/texture/icons/51_64_2.png"}, "2557": {"iconFile": "res:/ui/texture/icons/51_64_3.png"}, "2558": {"iconFile": "res:/ui/texture/icons/51_64_6.png"}, "2559": {"iconFile": "res:/ui/texture/icons/51_64_1.png"}, "5010": {"iconFile": "res:/Texture/Landmark/khanidkingdom.jpg"}, "10071": {"iconFile": "res:/ui/texture/icons/99_64_7.png"}, "5012": {"iconFile": "res:/Texture/Landmark/Curse.jpg"}, "5015": {"iconFile": "res:/Texture/Landmark/outerring.jpg"}, "5016": {"iconFile": "res:/Texture/Landmark/stain.jpg"}, "5017": {"iconFile": "res:/Texture/Landmark/venal.jpg"}, "21219": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34006_male_tattoo_armright_sleeve01__.png"}, "21218": {"iconFile": "res:/UI/Asset/mannequin/hair/34078_female_hair_Hair_Bun_Hp_02_Types_Hair_Bun_Hp_02_Black.png"}, "21211": {"iconFile": "res:/UI/Asset/mannequin/hair/34071_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Black.png"}, "21210": {"iconFile": "res:/UI/Asset/mannequin/hair/34070_female_hair_Hair_Bun_Hp_02_Types_Hair_Bun_Hp_02_Orange.png"}, "21213": {"iconFile": "res:/UI/Asset/mannequin/hair/34073_female_hair_Hair_Lace_01_Types_Hair_Lace_01_Metallic.png"}, "21212": {"iconFile": "res:/UI/Asset/mannequin/hair/34072_female_hair_Hair_Lace_01_Types_Hair_Lace_01_Copper.png"}, "21215": {"iconFile": "res:/UI/Asset/mannequin/hair/34075_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Simple.png"}, "21214": {"iconFile": "res:/UI/Asset/mannequin/hair/34074_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Jade.png"}, "21217": {"iconFile": "res:/UI/Asset/mannequin/hair/34077_female_hair_Hair_Lace_01_Types_Hair_Lace_01_Gold.png"}, "21216": {"iconFile": "res:/UI/Asset/mannequin/hair/34076_female_hair_Hair_Bun_Hp_02_Types_Hair_Bun_Hp_02_Clear.png"}, "3281": {"iconFile": "res:/ui/texture/icons/70_64_7.png"}, "21181": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33769_male_TopMiddle_ShirtQM01_Types_neom2014A.png"}, "21180": {"iconFile": "res:/UI/Asset/mannequin/outer/33791_male_outer_JacketCLM01_Types_JacketCLM01_White.png"}, "21183": {"iconFile": "res:/UI/Asset/mannequin/outer/33804_female_Outer_JacketMilF01_Types_JacketMilF01_silverV2.png"}, "21182": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33770_male_TopMiddle_ShirtQM01_Types_neom2014B.png"}, "21184": {"iconFile": "res:/UI/Asset/mannequin/outer/33803_male_outer_JacketMilM02_Types_JacketMilM02_blackV2.png"}, "21186": {"iconFile": "res:/UI/Texture/Icons/sourceBook.png"}, "2176": {"iconFile": "res:/ui/texture/icons/35_64_4.png"}, "2177": {"iconFile": "res:/ui/texture/icons/37_64_1.png"}, "2178": {"iconFile": "res:/ui/texture/icons/37_64_2.png"}, "2179": {"iconFile": "res:/ui/texture/icons/37_64_3.png"}, "3280": {"iconFile": "res:/ui/texture/icons/70_64_6.png"}, "10783": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4182_male_TopMiddle_ShirtGM01_Types_ShirtGM01_brown.png"}, "10782": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4181_male_TopMiddle_ShirtGM01_Types_ShirtGM01_blue2.png"}, "10781": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4180_male_TopMiddle_ShirtGM01_Types_ShirtGM01_black.png"}, "10780": {"iconFile": "res:/UI/Asset/mannequin/outer/4239_male_outer_JacketMilM02_Types_JacketMilM02_silver.png"}, "10787": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4186_male_TopMiddle_ShirtGM01_Types_ShirtGM01_lightgray.png"}, "10786": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4185_male_TopMiddle_ShirtGM01_Types_ShirtGM01_khaki.png"}, "10785": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4184_male_TopMiddle_ShirtGM01_Types_ShirtGM01_darkred.png"}, "10784": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4183_male_TopMiddle_ShirtGM01_Types_ShirtGM01_darkblue.png"}, "10035": {"iconFile": "res:/ui/texture/icons/97_64_9.png"}, "10034": {"iconFile": "res:/ui/texture/icons/97_64_8.png"}, "10789": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4188_male_TopMiddle_ShirtGM01_Types_ShirtGM01_p_darkcaldari.png"}, "10788": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4187_male_TopMiddle_ShirtGM01_Types_ShirtGM01_olive.png"}, "10031": {"iconFile": "res:/ui/texture/icons/97_64_5.png"}, "10030": {"iconFile": "res:/ui/texture/icons/97_64_4.png"}, "10033": {"iconFile": "res:/ui/texture/icons/97_64_7.png"}, "10032": {"iconFile": "res:/ui/texture/icons/97_64_6.png"}, "21241": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/34031_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_Black.png"}, "21493": {"iconFile": "res:/UI/Asset/mannequin/outer/37600_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_Black.png"}, "10251": {"iconFile": "res:/UI/Asset/mannequin/feet/4003_female_Feet_BootsMilF02_Types_BootsMilF02_black.png"}, "10250": {"iconFile": "res:/UI/Asset/mannequin/feet/4002_female_Feet_BootsMilF01_Types_BootsMilF01_black.png"}, "10253": {"iconFile": "res:/UI/Asset/mannequin/feet/4008_male_Feet_BootsMilM01_Types_BootsMilM01_black.png"}, "10252": {"iconFile": "res:/UI/Asset/mannequin/feet/4004_female_Feet_BootsMilF03_Types_BootsMilF03_black.png"}, "10255": {"iconFile": "res:/UI/Asset/mannequin/feet/4001_male_Feet_BootsMilM03_Types_BootsMilM03_black.png"}, "10254": {"iconFile": "res:/UI/Asset/mannequin/feet/3966_male_Feet_BootsMilM02_Types_BootsMilM02_black.png"}, "10257": {"iconFile": "res:/UI/netres/mission_content/arc_npe.png"}, "10256": {"iconFile": "res:/ui/texture/icons/65_128_3.png"}, "21523": {"iconFile": "res:/UI/Asset/mannequin/outer/40458_female_Outer_LabCoatF01_Types_LabCoatF01_Cyan.png"}, "21522": {"iconFile": "res:/UI/Asset/mannequin/outer/40457_female_Outer_LabCoatF01_Types_LabCoatF01_BlackRed.png"}, "21520": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/40525_female_bottomOuter_PantsMilF01_Types_PantsMilF01_upwell.png"}, "21527": {"iconFile": "res:/UI/Asset/mannequin/outer/40462_male_outer_LabCoatM01_Types_LabCoatM01_Cyan.png"}, "21526": {"iconFile": "res:/UI/Asset/mannequin/outer/40461_male_outer_LabCoatM01_Types_LabCoatM01_BlackRed.png"}, "21525": {"iconFile": "res:/UI/Asset/mannequin/outer/40460_female_Outer_LabCoatF01_Types_LabCoatF01_Green.png"}, "21524": {"iconFile": "res:/UI/Asset/mannequin/outer/40459_female_Outer_LabCoatF01_Types_LabCoatF01_Orange.png"}, "21497": {"iconFile": "res:/UI/Asset/mannequin/outer/37863_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_BlueWhite.png"}, "21529": {"iconFile": "res:/UI/Asset/mannequin/outer/40464_male_outer_LabCoatM01_Types_LabCoatM01_Orange.png"}, "21528": {"iconFile": "res:/UI/Asset/mannequin/outer/40463_male_outer_LabCoatM01_Types_LabCoatM01_Green.png"}, "21496": {"iconFile": "res:/UI/Asset/mannequin/outer/37603_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_SOERed.png"}, "21495": {"iconFile": "res:/UI/Asset/mannequin/outer/37602_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_Copper.png"}, "21494": {"iconFile": "res:/UI/Asset/mannequin/outer/37601_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_Blue.png"}, "1595": {"iconFile": "res:/ui/texture/corps/2_128_4.png"}, "1594": {"iconFile": "res:/ui/texture/corps/5_128_4.png"}, "1597": {"iconFile": "res:/ui/texture/corps/6_128_1.png"}, "1596": {"iconFile": "res:/ui/texture/corps/5_128_3.png"}, "3074": {"iconFile": "res:/ui/texture/icons/35_64_3.png"}, "1590": {"iconFile": "res:/ui/texture/corps/10_128_4.png"}, "1593": {"iconFile": "res:/ui/texture/corps/1_128_1.png"}, "1592": {"iconFile": "res:/ui/texture/corps/7_128_2.png"}, "1599": {"iconFile": "res:/ui/texture/corps/2_128_3.png"}, "1598": {"iconFile": "res:/ui/texture/corps/2_128_1.png"}, "1029": {"iconFile": "res:/ui/texture/icons/1_64_3.png"}, "1209": {"iconFile": "res:/ui/texture/icons/7_64_16.png"}, "1205": {"iconFile": "res:/ui/texture/icons/11_64_13.png"}, "1204": {"iconFile": "res:/ui/texture/icons/11_64_12.png"}, "1207": {"iconFile": "res:/ui/texture/icons/11_64_15.png"}, "1206": {"iconFile": "res:/ui/texture/icons/11_64_14.png"}, "1201": {"iconFile": "res:/ui/texture/icons/11_64_9.png"}, "1200": {"iconFile": "res:/ui/texture/icons/6_64_13.png"}, "10772": {"iconFile": "res:/UI/Asset/mannequin/outer/4245_male_outer_JacketMilM01_Types_JacketMilM01_silver.png"}, "10773": {"iconFile": "res:/UI/Asset/mannequin/outer/4233_male_outer_JacketMilM02_Types_JacketMilM02_black.png"}, "3325": {"iconFile": "res:/ui/texture/icons/72_64_3.png"}, "1447": {"iconFile": "res:/ui/texture/corps/42_128_3.png"}, "1446": {"iconFile": "res:/ui/texture/icons/9_64_16.png"}, "1445": {"iconFile": "res:/ui/texture/icons/3_64_7.png"}, "1444": {"iconFile": "res:/ui/texture/icons/25_64_4.png"}, "1443": {"iconFile": "res:/ui/texture/icons/9_64_5.png"}, "1442": {"iconFile": "res:/ui/texture/icons/19_128_4.png"}, "1441": {"iconFile": "res:/ui/texture/icons/19_128_3.png"}, "1440": {"iconFile": "res:/ui/texture/icons/19_128_2.png"}, "21390": {"iconFile": "res:/UI/Asset/mannequin/outer/34394_female_Outer_JacketPrtF01_Types_JacketPrtF01_orange.png"}, "1449": {"iconFile": "res:/ui/texture/corps/39_128_4.png"}, "1448": {"iconFile": "res:/ui/texture/corps/43_128_1.png"}, "21393": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34356_male_bottomOuter_PantsPrtm01_Types_PantsPrtm01_guristas.png"}, "10771": {"iconFile": "res:/UI/Asset/mannequin/outer/4244_male_outer_JacketMilM01_Types_JacketMilM01_green.png"}, "10872": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_mobilecru.png"}, "10808": {"iconFile": "res:/UI/Asset/mannequin/topouter/4068_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_ishukone.png"}, "10809": {"iconFile": "res:/UI/Asset/mannequin/topouter/4060_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_olive.png"}, "10804": {"iconFile": "res:/UI/Asset/mannequin/topouter/4058_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_blue.png"}, "10805": {"iconFile": "res:/UI/Asset/mannequin/topouter/4059_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_dust.png"}, "10806": {"iconFile": "res:/UI/Asset/mannequin/topouter/4240_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_goldleather.png"}, "10807": {"iconFile": "res:/UI/Asset/mannequin/topouter/4241_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_gray.png"}, "10800": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4198_male_TopMiddle_TanktopM01_Types_TanktopM01_p03.png"}, "10801": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4199_male_TopMiddle_TanktopM01_Types_TanktopM01_p04.png"}, "10802": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4200_male_TopMiddle_TanktopM01_Types_TanktopM01_white.png"}, "10803": {"iconFile": "res:/UI/Asset/mannequin/topouter/4057_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_black.png"}, "191": {"iconFile": "res:/ui/texture/icons/13_64_8.png"}, "190": {"iconFile": "res:/ui/texture/icons/13_64_4.png"}, "193": {"iconFile": "res:/ui/texture/icons/13_64_12.png"}, "192": {"iconFile": "res:/ui/texture/icons/13_64_16.png"}, "21066": {"iconFile": "res:/ui/texture/icons/114_64_2.png"}, "21064": {"iconFile": "res:/ui/texture/icons/115_64_5.png"}, "21065": {"iconFile": "res:/ui/texture/icons/114_64_1.png"}, "21062": {"iconFile": "res:/ui/texture/icons/115_64_3.png"}, "21063": {"iconFile": "res:/ui/texture/icons/115_64_4.png"}, "21060": {"iconFile": "res:/ui/texture/icons/115_64_1.png"}, "21061": {"iconFile": "res:/ui/texture/icons/115_64_2.png"}, "2543": {"iconFile": "res:/ui/texture/icons/46_64_8.png"}, "2542": {"iconFile": "res:/ui/texture/icons/46_64_7.png"}, "2541": {"iconFile": "res:/ui/texture/icons/46_64_6.png"}, "2540": {"iconFile": "res:/ui/texture/icons/46_64_5.png"}, "2547": {"iconFile": "res:/ui/texture/icons/46_64_13.png"}, "2546": {"iconFile": "res:/ui/texture/icons/46_64_11.png"}, "2545": {"iconFile": "res:/ui/texture/icons/46_64_10.png"}, "2544": {"iconFile": "res:/ui/texture/icons/46_64_9.png"}, "2549": {"iconFile": "res:/ui/texture/icons/46_64_15.png"}, "2548": {"iconFile": "res:/ui/texture/icons/46_64_14.png"}, "21569": {"iconFile": "res:/ui/texture/icons/124_64_7.png"}, "3747": {"iconFile": "res:/ui/texture/icons/83_64_8.png"}, "21568": {"iconFile": "res:/ui/texture/icons/124_64_6.png"}, "21118": {"iconFile": "res:/UI/Asset/mannequin/feet/33714_female_Feet_BootsALF_01_Types_BootsALF_01_blackgold.png"}, "5003": {"iconFile": "res:/Texture/Landmark/amarr.jpg"}, "21119": {"iconFile": "res:/UI/Asset/mannequin/feet/33716_female_Feet_BootsALF_01_Types_BootsALF_01_brown.png"}, "5007": {"iconFile": "res:/Texture/Landmark/galente.jpg"}, "5006": {"iconFile": "res:/Texture/Landmark/caldari.jpg"}, "5005": {"iconFile": "res:/Texture/Landmark/minmatar.jpg"}, "5008": {"iconFile": "res:/Texture/Landmark/jove.jpg"}, "21208": {"iconFile": "res:/UI/Asset/mannequin/hair/34068_female_hair_Hair_Lace_01_Types_Hair_Lace_01_Black.png"}, "21209": {"iconFile": "res:/UI/Asset/mannequin/hair/34069_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Gold.png"}, "21202": {"iconFile": "res:/UI/Asset/mannequin/hair/34062_male_hair_HeadWear_Caldari_Types_HeadWear_Caldari_Metal.png"}, "21203": {"iconFile": "res:/UI/Asset/mannequin/hair/34063_male_hair_HeadWear_Caldari_Types_HeadWear_Caldari_BlackShiny.png"}, "21200": {"iconFile": "res:/UI/Asset/mannequin/hair/34060_male_hair_HeadWear_Amarr_Types_HeadWear_Amarr_Gold.png"}, "21201": {"iconFile": "res:/UI/Asset/mannequin/hair/34061_male_hair_HeadWear_Amarr_Types_HeadWear_Amarr_Bronze.png"}, "21206": {"iconFile": "res:/UI/Asset/mannequin/hair/34066_female_hair_Hair_Bun_Hp_02_Types_Hair_Bun_Hp_02_Blue.png"}, "21207": {"iconFile": "res:/UI/Asset/mannequin/hair/34067_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Platinum.png"}, "21204": {"iconFile": "res:/UI/Asset/mannequin/hair/34064_female_hair_Hair_Bun_Hp_02_Types_Hair_Bun_Hp_02_Cyan.png"}, "21205": {"iconFile": "res:/UI/Asset/mannequin/hair/34065_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Gunmetal.png"}, "21198": {"iconFile": "res:/UI/Asset/mannequin/hair/34058_male_hair_HeadWear_Caldari_Types_HeadWear_Caldari_White.png"}, "21199": {"iconFile": "res:/UI/Asset/mannequin/hair/34059_male_hair_HeadWear_Amarr_Types_HeadWear_Amarr_Silver.png"}, "21192": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33813_female_TopMiddle_ShirtQF01_Types_shirtqf04.png"}, "21193": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33812_male_TopMiddle_ShirtQM01_Types_shirtqm04.png"}, "21197": {"iconFile": "res:/UI/Asset/mannequin/hair/34057_male_hair_HeadWear_Caldari_Types_HeadWear_Caldari_Black.png"}, "21195": {"iconFile": "res:/UI/Asset/mannequin/hair/34056_male_hair_HeadWear_Amarr_Types_HeadWear_Amarr_Black.png"}, "21404": {"iconFile": "res:/ui/texture/icons/117_64_2.png"}, "20959": {"iconFile": "res:/UI/Texture/Icons/MarketIcon_16px_Amarr.png"}, "20958": {"iconFile": "res:/ui/texture/icons/108_64_15.png"}, "20951": {"iconFile": "res:/ui/texture/icons/108_64_20.png"}, "20950": {"iconFile": "res:/ui/texture/icons/108_64_2.png"}, "20953": {"iconFile": "res:/ui/texture/icons/108_64_18.png"}, "20952": {"iconFile": "res:/ui/texture/icons/108_64_21.png"}, "20955": {"iconFile": "res:/ui/texture/icons/108_64_16.png"}, "20954": {"iconFile": "res:/ui/texture/icons/108_64_19.png"}, "20957": {"iconFile": "res:/ui/texture/icons/108_64_14.png"}, "20956": {"iconFile": "res:/ui/texture/icons/108_64_17.png"}, "21336": {"iconFile": "res:/UI/Texture/Icons/multiple_training.png"}, "21441": {"iconFile": "res:/UI/Texture/Icons/5_64_20.png"}, "21442": {"iconFile": "res:/UI/Texture/Icons/5_64_21.png"}, "21335": {"iconFile": "res:/UI/Texture/Icons/character_resculpt.png"}, "10798": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4196_male_TopMiddle_TanktopM01_Types_TanktopM01_p01.png"}, "10799": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4197_male_TopMiddle_TanktopM01_Types_TanktopM01_p02.png"}, "10028": {"iconFile": "res:/ui/texture/icons/97_64_2.png"}, "10029": {"iconFile": "res:/ui/texture/icons/97_64_3.png"}, "10026": {"iconFile": "res:/ui/texture/icons/96_64_16.png"}, "10027": {"iconFile": "res:/ui/texture/icons/97_64_1.png"}, "10024": {"iconFile": "res:/ui/texture/icons/96_64_14.png"}, "10025": {"iconFile": "res:/ui/texture/icons/96_64_15.png"}, "10022": {"iconFile": "res:/ui/texture/icons/96_64_12.png"}, "10023": {"iconFile": "res:/ui/texture/icons/96_64_13.png"}, "10020": {"iconFile": "res:/ui/texture/icons/96_64_10.png"}, "10021": {"iconFile": "res:/ui/texture/icons/96_64_11.png"}, "3450": {"iconFile": "res:/ui/texture/icons/78_64_16.png"}, "20966": {"iconFile": "res:/UI/Texture/Icons/MarketIcon_16px_Caldari.png"}, "20967": {"iconFile": "res:/UI/Texture/Icons/MarketIcon_16px_Gallente.png"}, "20968": {"iconFile": "res:/UI/Texture/Icons/MarketIcon_16px_Minmatar.png"}, "10248": {"iconFile": "res:/UI/Asset/mannequin/topouter/4068_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_ishukone.png"}, "10249": {"iconFile": "res:/UI/Asset/mannequin/outer/3975_female_Outer_JacketMilF02_Types_JacketMilF02_blue.png"}, "20969": {"iconFile": "res:/UI/Texture/Icons/94_64_9.png"}, "10242": {"iconFile": "res:/UI/Asset/mannequin/topouter/4060_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_olive.png"}, "10243": {"iconFile": "res:/UI/Asset/mannequin/topouter/4061_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_black.png"}, "10240": {"iconFile": "res:/UI/Asset/mannequin/topouter/4058_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_blue.png"}, "10241": {"iconFile": "res:/UI/Asset/mannequin/topouter/4059_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_dust.png"}, "10246": {"iconFile": "res:/UI/Asset/mannequin/topouter/4064_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_olive.png"}, "10247": {"iconFile": "res:/UI/Asset/mannequin/topouter/4065_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_lightgrey.png"}, "10244": {"iconFile": "res:/UI/Asset/mannequin/topouter/4062_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_blue.png"}, "10245": {"iconFile": "res:/UI/Asset/mannequin/topouter/4063_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_dust.png"}, "21534": {"iconFile": "res:/ui/texture/icons/118_64_8.png"}, "21530": {"iconFile": "res:/UI/Texture/Icons/skillExtractor_64.png"}, "21531": {"iconFile": "res:/UI/Texture/Icons/skillInjector_64.png"}, "21532": {"iconFile": "res:/ui/texture/icons/118_64_3.png"}, "21533": {"iconFile": "res:/ui/texture/icons/118_64_4.png"}, "2943": {"iconFile": "res:/ui/texture/icons/57_64_4.png"}, "1279": {"iconFile": "res:/ui/texture/icons/23_64_11.png"}, "1270": {"iconFile": "res:/ui/texture/icons/23_64_12.png"}, "1271": {"iconFile": "res:/ui/texture/icons/23_64_13.png"}, "1272": {"iconFile": "res:/ui/texture/icons/23_64_7.png"}, "1273": {"iconFile": "res:/ui/texture/icons/23_64_6.png"}, "1274": {"iconFile": "res:/ui/texture/icons/23_64_14.png"}, "1275": {"iconFile": "res:/ui/texture/icons/23_64_8.png"}, "1277": {"iconFile": "res:/ui/texture/icons/23_64_5.png"}, "10206": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3998_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Gray.png"}, "10207": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3999_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Blackwax.png"}, "10204": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3992_male_bottomOuter_PantsMilM01_Types_PantsMilM01_blackwaxed.png"}, "1472": {"iconFile": "res:/ui/texture/corps/23_128_2.png"}, "1473": {"iconFile": "res:/ui/texture/corps/21_128_3.png"}, "1470": {"iconFile": "res:/ui/texture/corps/22_128_4.png"}, "1471": {"iconFile": "res:/ui/texture/corps/21_128_2.png"}, "1476": {"iconFile": "res:/ui/texture/corps/22_128_3.png"}, "1477": {"iconFile": "res:/ui/texture/corps/23_128_4.png"}, "1474": {"iconFile": "res:/ui/texture/corps/23_128_3.png"}, "1475": {"iconFile": "res:/ui/texture/corps/21_128_4.png"}, "3337": {"iconFile": "res:/ui/texture/icons/72_64_14.png"}, "1478": {"iconFile": "res:/ui/texture/corps/21_128_1.png"}, "1479": {"iconFile": "res:/ui/texture/corps/14_128_3.png"}, "3336": {"iconFile": "res:/ui/texture/icons/72_64_13.png"}, "1304": {"iconFile": "res:/ui/texture/icons/15_64_5.png"}, "1305": {"iconFile": "res:/ui/texture/icons/15_64_6.png"}, "1306": {"iconFile": "res:/ui/texture/icons/15_64_7.png"}, "1307": {"iconFile": "res:/ui/texture/icons/15_64_8.png"}, "1300": {"iconFile": "res:/ui/texture/icons/15_64_1.png"}, "1301": {"iconFile": "res:/ui/texture/icons/15_64_2.png"}, "1302": {"iconFile": "res:/ui/texture/icons/15_64_3.png"}, "1303": {"iconFile": "res:/ui/texture/icons/15_64_4.png"}, "3334": {"iconFile": "res:/ui/texture/icons/72_64_11.png"}, "21233": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33998_male_tattoo_armleft_sleeve06__.png"}, "21232": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33997_male_tattoo_armleft_sleeve03__.png"}, "26": {"iconFile": "res:/ui/texture/icons/6_64_5.png"}, "27": {"iconFile": "res:/ui/texture/icons/6_64_11.png"}, "21": {"iconFile": "res:/ui/texture/icons/6_64_3.png"}, "22": {"iconFile": "res:/ui/texture/icons/6_64_14.png"}, "28": {"iconFile": "res:/ui/texture/icons/6_64_9.png"}, "29": {"iconFile": "res:/ui/texture/icons/6_64_6.png"}, "3262": {"iconFile": "res:/ui/texture/icons/69_64_13.png"}, "10209": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4085_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Black.png"}, "5032": {"iconFile": "res:/Texture/Landmark/traumark.jpg"}, "21486": {"iconFile": "res:/ui/texture/icons/118_64_13.png"}, "5033": {"iconFile": "res:/Texture/Landmark/cityofgod.jpg"}, "3265": {"iconFile": "res:/ui/texture/icons/69_64_16.png"}, "21239": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34004_male_tattoo_armleft_sleeve13__.png"}, "21238": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34003_male_tattoo_armleft_sleeve12__.png"}, "3264": {"iconFile": "res:/ui/texture/icons/69_64_15.png"}, "10879": {"iconFile": "res:/UI/Texture/Icons/dust_icon_inst_supplydepot.png"}, "10878": {"iconFile": "res:/UI/Texture/Icons/dust_icon_inst_default.png"}, "10871": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_assultrifle.png"}, "10870": {"iconFile": "res:/UI/Texture/Icons/dust_icon_dropsuit_default.png"}, "10873": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_rl_std.png"}, "21601": {"iconFile": "res:/ui/texture/icons/127_64_10.png"}, "10875": {"iconFile": "res:/UI/Texture/Icons/dust_icon_veh_mcc.png"}, "10874": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_bio_healthbooster.png"}, "10877": {"iconFile": "res:/UI/Texture/Icons/dust_icon_inst_clonereserveunit.png"}, "10876": {"iconFile": "res:/UI/Texture/Icons/dust_icon_inst_capacitor.png"}, "21059": {"iconFile": "res:/UI/Texture/Icons/113_64_3.png"}, "21058": {"iconFile": "res:/UI/Texture/Icons/113_64_2.png"}, "21053": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/33381_male_tattoo_armright_sleeve04__.png"}, "21052": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33380_male_tattoo_armleft_sleeve08__.png"}, "21051": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33379_male_tattoo_armleft_sleeve14__.png"}, "21050": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33378_male_tattoo_armleft_sleeve05__.png"}, "21057": {"iconFile": "res:/UI/Texture/Icons/113_64_1.png"}, "21056": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/33384_male_tattoo_armright_sleeve08__.png"}, "21055": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/33383_male_tattoo_armright_sleeve14__.png"}, "21054": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/33382_male_tattoo_armright_sleeve05__.png"}, "2578": {"iconFile": "res:/ui/texture/icons/47_64_12.png"}, "2579": {"iconFile": "res:/ui/texture/icons/47_64_13.png"}, "2576": {"iconFile": "res:/ui/texture/icons/47_64_10.png"}, "2577": {"iconFile": "res:/ui/texture/icons/47_64_11.png"}, "2574": {"iconFile": "res:/ui/texture/icons/47_64_8.png"}, "2575": {"iconFile": "res:/ui/texture/icons/47_64_9.png"}, "2572": {"iconFile": "res:/ui/texture/icons/47_64_6.png"}, "2573": {"iconFile": "res:/ui/texture/icons/47_64_7.png"}, "2570": {"iconFile": "res:/ui/texture/icons/47_64_4.png"}, "2571": {"iconFile": "res:/ui/texture/icons/47_64_5.png"}, "10905": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_prop_afterburner.png"}, "10904": {"iconFile": "res:/UI/Texture/Icons/dust_icon_booster_skillgain.png"}, "10907": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_armor_lightweightchassis.png"}, "10906": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_armor_armorplates.png"}, "10901": {"iconFile": "res:/UI/Texture/Icons/dust_icon_veh_rdv.png"}, "10900": {"iconFile": "res:/UI/Texture/Icons/dust_icon_tur_blaster.png"}, "10903": {"iconFile": "res:/UI/Texture/Icons/dust_icon_veh_dropship_ga.png"}, "10902": {"iconFile": "res:/UI/Texture/Icons/dust_icon_veh_dropship_ca.png"}, "10909": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_reactorcoreunit.png"}, "10908": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_locusgrenade.png"}, "21237": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34002_male_tattoo_armleft_sleeve11__.png"}, "21236": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34001_male_tattoo_armleft_sleeve10__.png"}, "21235": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34000_male_tattoo_armleft_sleeve09__.png"}, "21234": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33999_male_tattoo_armleft_sleeve07__.png"}, "10659": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4205_female_TopMiddle_ShirtGF01_Types_ShirtGF01_darkblue.png"}, "10658": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4204_female_TopMiddle_ShirtGF01_Types_ShirtGF01_cream.png"}, "21231": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33996_male_tattoo_armleft_sleeve02__.png"}, "21230": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33995_male_tattoo_armleft_sleeve01__.png"}, "10655": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4201_female_TopMiddle_ShirtGF01_Types_ShirtGF01_black.png"}, "10654": {"iconFile": "res:/UI/Asset/mannequin/outer/4154_female_Outer_JacketMilF02_Types_JacketMilF02_turquoise.png"}, "10657": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4203_female_TopMiddle_ShirtGF01_Types_ShirtGF01_brown.png"}, "10656": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4202_female_TopMiddle_ShirtGF01_Types_ShirtGF01_blue2.png"}, "10651": {"iconFile": "res:/UI/Asset/mannequin/outer/4151_female_Outer_JacketMilF02_Types_JacketMilF02_matblue.png"}, "10650": {"iconFile": "res:/UI/Asset/mannequin/outer/4150_female_Outer_JacketMilF02_Types_JacketMilF02_green.png"}, "10653": {"iconFile": "res:/UI/Asset/mannequin/outer/4153_female_Outer_JacketMilF02_Types_JacketMilF02_red.png"}, "10652": {"iconFile": "res:/UI/Asset/mannequin/outer/4152_female_Outer_JacketMilF02_Types_JacketMilF02_matred.png"}, "21282": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34052_female_bottomMiddle_TightsF01_Types_TightsF01_thickmatblack.png"}, "182": {"iconFile": "res:/ui/texture/icons/20_64_16.png"}, "183": {"iconFile": "res:/ui/texture/icons/20_64_4.png"}, "186": {"iconFile": "res:/ui/texture/icons/20_64_10.png"}, "187": {"iconFile": "res:/ui/texture/icons/20_64_14.png"}, "184": {"iconFile": "res:/ui/texture/icons/20_64_8.png"}, "185": {"iconFile": "res:/ui/texture/icons/20_64_12.png"}, "188": {"iconFile": "res:/ui/texture/icons/20_64_6.png"}, "189": {"iconFile": "res:/ui/texture/icons/20_64_2.png"}, "20948": {"iconFile": "res:/ui/texture/icons/108_64_4.png"}, "20949": {"iconFile": "res:/ui/texture/icons/108_64_1.png"}, "20942": {"iconFile": "res:/ui/texture/icons/108_64_8.png"}, "20943": {"iconFile": "res:/ui/texture/icons/108_64_12.png"}, "20940": {"iconFile": "res:/ui/texture/icons/108_64_6.png"}, "20941": {"iconFile": "res:/ui/texture/icons/108_64_7.png"}, "20946": {"iconFile": "res:/ui/texture/icons/108_64_11.png"}, "20947": {"iconFile": "res:/ui/texture/icons/108_64_3.png"}, "20944": {"iconFile": "res:/ui/texture/icons/108_64_13.png"}, "20945": {"iconFile": "res:/ui/texture/icons/108_64_10.png"}, "21303": {"iconFile": "res:/UI/Asset/mannequin/feet/34088_female_Feet_SpaceBoots01F_Types_spaceboots01f_white.png"}, "21302": {"iconFile": "res:/UI/Asset/mannequin/feet/34087_female_Feet_SpaceBoots01F_Types_spaceboots01f_stealth.png"}, "10019": {"iconFile": "res:/ui/texture/icons/96_64_9.png"}, "10018": {"iconFile": "res:/ui/texture/icons/96_64_8.png"}, "21307": {"iconFile": "res:/UI/Asset/mannequin/outer/34092_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_blue.png"}, "21306": {"iconFile": "res:/UI/Asset/mannequin/outer/34091_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_blackgold.png"}, "21305": {"iconFile": "res:/UI/Asset/mannequin/outer/34090_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_black.png"}, "21304": {"iconFile": "res:/UI/Asset/mannequin/feet/34089_female_Feet_SpaceBoots01F_Types_spaceboots01f_yellow.png"}, "10013": {"iconFile": "res:/ui/texture/icons/96_64_3.png"}, "10012": {"iconFile": "res:/ui/texture/icons/96_64_2.png"}, "21309": {"iconFile": "res:/UI/Asset/mannequin/outer/34094_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_greengold.png"}, "21308": {"iconFile": "res:/UI/Asset/mannequin/outer/34093_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_brown.png"}, "10017": {"iconFile": "res:/ui/texture/icons/96_64_7.png"}, "10016": {"iconFile": "res:/ui/texture/icons/96_64_6.png"}, "10015": {"iconFile": "res:/ui/texture/icons/96_64_5.png"}, "10014": {"iconFile": "res:/ui/texture/icons/96_64_4.png"}, "3449": {"iconFile": "res:/ui/texture/icons/78_64_15.png"}, "3448": {"iconFile": "res:/ui/texture/icons/78_64_14.png"}, "3445": {"iconFile": "res:/ui/texture/icons/78_64_11.png"}, "3444": {"iconFile": "res:/ui/texture/icons/78_64_10.png"}, "3447": {"iconFile": "res:/ui/texture/icons/78_64_13.png"}, "3446": {"iconFile": "res:/ui/texture/icons/78_64_12.png"}, "3441": {"iconFile": "res:/ui/texture/icons/78_64_7.png"}, "3440": {"iconFile": "res:/ui/texture/icons/78_64_6.png"}, "3443": {"iconFile": "res:/ui/texture/icons/78_64_9.png"}, "3442": {"iconFile": "res:/ui/texture/icons/78_64_8.png"}, "2754": {"iconFile": "res:/ui/texture/icons/7_64_13.png"}, "2028": {"iconFile": "res:/ui/texture/icons/22_32_25.png"}, "2029": {"iconFile": "res:/ui/texture/icons/22_32_26.png"}, "352": {"iconFile": "res:/ui/texture/icons/13_64_9.png"}, "77": {"iconFile": "res:/ui/texture/icons/2_64_11.png"}, "76": {"iconFile": "res:/ui/texture/icons/2_64_10.png"}, "75": {"iconFile": "res:/ui/texture/icons/2_64_13.png"}, "74": {"iconFile": "res:/ui/texture/icons/3_64_9.png"}, "73": {"iconFile": "res:/ui/texture/icons/2_64_14.png"}, "72": {"iconFile": "res:/ui/texture/icons/3_64_1.png"}, "71": {"iconFile": "res:/ui/texture/icons/3_64_13.png"}, "70": {"iconFile": "res:/ui/texture/icons/2_64_7.png"}, "2971": {"iconFile": "res:/ui/texture/icons/36_64_13.png"}, "79": {"iconFile": "res:/ui/texture/icons/1_64_10.png"}, "78": {"iconFile": "res:/ui/texture/icons/1_64_12.png"}, "1042": {"iconFile": "res:/ui/texture/icons/2_64_12.png"}, "1041": {"iconFile": "res:/ui/texture/icons/3_64_6.png"}, "1047": {"iconFile": "res:/ui/texture/icons/15_64_9.png"}, "1046": {"iconFile": "res:/ui/texture/icons/5_64_12.png"}, "1044": {"iconFile": "res:/ui/texture/icons/2_64_5.png"}, "21301": {"iconFile": "res:/UI/Asset/mannequin/feet/34086_female_Feet_SpaceBoots01F_Types_spaceboots01f_redblack.png"}, "3027": {"iconFile": "res:/ui/texture/icons/58_64_4.png"}, "20976": {"iconFile": "res:/UI/Texture/Icons/DudeYourChin_64px_Icon.jpg"}, "1269": {"iconFile": "res:/ui/texture/icons/23_64_9.png"}, "3023": {"iconFile": "res:/ui/texture/icons/59_128_3.png"}, "3022": {"iconFile": "res:/ui/texture/icons/59_128_2.png"}, "3021": {"iconFile": "res:/ui/texture/icons/59_128_1.png"}, "3128": {"iconFile": "res:/ui/texture/icons/60_128_2.png"}, "3129": {"iconFile": "res:/ui/texture/icons/60_128_3.png"}, "3283": {"iconFile": "res:/ui/texture/icons/70_64_4.png"}, "3127": {"iconFile": "res:/ui/texture/icons/60_128_1.png"}, "3282": {"iconFile": "res:/ui/texture/icons/70_64_3.png"}, "1469": {"iconFile": "res:/ui/texture/corps/23_128_1.png"}, "1468": {"iconFile": "res:/ui/texture/corps/22_128_1.png"}, "1465": {"iconFile": "res:/ui/texture/corps/7_128_4.png"}, "1464": {"iconFile": "res:/ui/texture/icons/25_64_10.png"}, "1467": {"iconFile": "res:/ui/texture/corps/22_128_2.png"}, "1466": {"iconFile": "res:/ui/texture/corps/41_128_3.png"}, "1461": {"iconFile": "res:/ui/texture/icons/25_64_7.png"}, "1460": {"iconFile": "res:/ui/texture/icons/25_64_6.png"}, "1463": {"iconFile": "res:/ui/texture/icons/25_64_9.png"}, "1462": {"iconFile": "res:/ui/texture/icons/25_64_8.png"}, "1317": {"iconFile": "res:/ui/texture/icons/16_64_1.png"}, "1316": {"iconFile": "res:/ui/texture/icons/15_64_16.png"}, "1315": {"iconFile": "res:/ui/texture/icons/15_64_15.png"}, "1314": {"iconFile": "res:/ui/texture/icons/15_64_14.png"}, "1313": {"iconFile": "res:/ui/texture/icons/15_64_13.png"}, "1312": {"iconFile": "res:/ui/texture/icons/15_64_12.png"}, "1311": {"iconFile": "res:/ui/texture/icons/15_64_11.png"}, "1310": {"iconFile": "res:/ui/texture/icons/15_64_10.png"}, "1319": {"iconFile": "res:/ui/texture/icons/16_64_3.png"}, "1318": {"iconFile": "res:/ui/texture/icons/16_64_2.png"}, "3948": {"iconFile": "res:/ui/texture/icons/95_64_6.png"}, "3949": {"iconFile": "res:/ui/texture/icons/95_64_7.png"}, "3943": {"iconFile": "res:/ui/texture/icons/95_64_11.png"}, "3945": {"iconFile": "res:/ui/texture/icons/95_64_2.png"}, "3946": {"iconFile": "res:/ui/texture/icons/95_64_3.png"}, "3947": {"iconFile": "res:/ui/texture/icons/95_64_4.png"}, "20970": {"iconFile": "res:/UI/Texture/Icons/53_64_16.png"}, "21489": {"iconFile": "res:/ui/texture/icons/118_64_2.png"}, "10868": {"iconFile": "res:/UI/Texture/Icons/dust_icon_dropsuit_scout.png"}, "10869": {"iconFile": "res:/UI/Texture/Icons/dust_icon_dropsuit_assult.png"}, "10862": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_grenade.png"}, "10863": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_miasmagrenade.png"}, "10860": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_armor_remotearmorrepair.png"}, "10861": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_scramblerpistol.png"}, "10866": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_unit_scanner.png"}, "10867": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_sinperrifle.png"}, "10864": {"iconFile": "res:/UI/Texture/Icons/dust_icon_skill.png"}, "21047": {"iconFile": "res:/UI/Texture/Icons/107_64_4.png"}, "21048": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33377_male_tattoo_armleft_sleeve04__.png"}, "2569": {"iconFile": "res:/ui/texture/icons/47_64_3.png"}, "2568": {"iconFile": "res:/ui/texture/icons/47_64_2.png"}, "2561": {"iconFile": "res:/ui/texture/icons/51_64_8.png"}, "2560": {"iconFile": "res:/ui/texture/icons/51_64_9.png"}, "2563": {"iconFile": "res:/ui/texture/icons/2_64_16.png"}, "2562": {"iconFile": "res:/ui/texture/icons/12_64_3.png"}, "2567": {"iconFile": "res:/ui/texture/icons/47_64_1.png"}, "10916": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_resistance.png"}, "10917": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_damagecontrol.png"}, "10914": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_shieldbooster.png"}, "10915": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_armor_resistance.png"}, "10912": {"iconFile": "res:/UI/Texture/Icons/dust_icon_veh_hav_ga.png"}, "10913": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_remoteshieldrecharger.png"}, "10910": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_armor_armorrepair.png"}, "10911": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_avgrenade.png"}, "5020": {"iconFile": "res:/Texture/Landmark/pointofnoreturn.jpg"}, "21220": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34007_male_tattoo_armright_sleeve02__.png"}, "21221": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34008_male_tattoo_armright_sleeve03__.png"}, "21222": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34009_male_tattoo_armright_sleeve06__.png"}, "21223": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34010_male_tattoo_armright_sleeve07__.png"}, "21224": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34011_male_tattoo_armright_sleeve09__.png"}, "2582": {"iconFile": "res:/ui/texture/icons/47_64_16.png"}, "10648": {"iconFile": "res:/UI/Asset/mannequin/outer/4146_female_Outer_JacketMilF02_Types_JacketMilF02_goldblack.png"}, "10649": {"iconFile": "res:/UI/Asset/mannequin/outer/4149_female_Outer_JacketMilF02_Types_JacketMilF02_graphite.png"}, "21228": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34015_male_tattoo_armright_sleeve13__.png"}, "10647": {"iconFile": "res:/UI/Asset/mannequin/outer/4145_female_Outer_JacketMilF02_Types_JacketMilF02_brown.png"}, "10644": {"iconFile": "res:/UI/Asset/mannequin/outer/4143_female_Outer_JacketMilF02_Types_JacketMilF02_black.png"}, "10645": {"iconFile": "res:/UI/Asset/mannequin/outer/4144_female_Outer_JacketMilF02_Types_JacketMilF02_blackwhite.png"}, "10642": {"iconFile": "res:/UI/Asset/mannequin/outer/4141_female_Outer_JacketMilF01_Types_JacketMilF01_redgold.png"}, "10643": {"iconFile": "res:/UI/Asset/mannequin/outer/4142_female_Outer_JacketMilF01_Types_JacketMilF01_silver.png"}, "10640": {"iconFile": "res:/UI/Asset/mannequin/outer/4139_female_Outer_JacketMilF01_Types_JacketMilF01_matblue.png"}, "10641": {"iconFile": "res:/UI/Asset/mannequin/outer/4140_female_Outer_JacketMilF01_Types_JacketMilF01_matred.png"}, "3728": {"iconFile": "res:/ui/texture/icons/82_64_1.png"}, "3729": {"iconFile": "res:/ui/texture/icons/82_64_2.png"}, "3724": {"iconFile": "res:/ui/texture/icons/82_64_7.png"}, "3725": {"iconFile": "res:/ui/texture/icons/82_64_8.png"}, "3726": {"iconFile": "res:/ui/texture/icons/82_64_4.png"}, "3727": {"iconFile": "res:/ui/texture/icons/82_64_3.png"}, "3720": {"iconFile": "res:/ui/texture/icons/76_64_13.png"}, "3721": {"iconFile": "res:/ui/texture/icons/76_64_11.png"}, "3722": {"iconFile": "res:/ui/texture/icons/82_64_10.png"}, "3723": {"iconFile": "res:/ui/texture/icons/82_64_9.png"}, "21588": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41046_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V5_.png"}, "2103": {"iconFile": "res:/ui/texture/icons/35_64_2.png"}, "2102": {"iconFile": "res:/ui/texture/icons/35_64_11.png"}, "2101": {"iconFile": "res:/ui/texture/icons/35_64_1.png"}, "2100": {"iconFile": "res:/ui/texture/icons/35_64_8.png"}, "2106": {"iconFile": "res:/ui/texture/icons/35_64_12.png"}, "2105": {"iconFile": "res:/ui/texture/icons/35_64_14.png"}, "2104": {"iconFile": "res:/ui/texture/icons/35_64_15.png"}, "21176": {"iconFile": "res:/UI/Asset/mannequin/outer/33795_male_outer_JacketCLM01_Types_JacketCLM01_BlueShiny.png"}, "21177": {"iconFile": "res:/UI/Asset/mannequin/outer/33794_male_outer_JacketCLM01_Types_JacketCLM01_DarkRed.png"}, "21314": {"iconFile": "res:/UI/Asset/mannequin/outer/34099_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_white.png"}, "21170": {"iconFile": "res:/UI/Asset/mannequin/feet/33771_male_Feet_BootsCLM01_Types_BootsCLM01_White.png"}, "21310": {"iconFile": "res:/UI/Asset/mannequin/outer/34095_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_orange.png"}, "21311": {"iconFile": "res:/UI/Asset/mannequin/outer/34096_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_red.png"}, "21312": {"iconFile": "res:/UI/Asset/mannequin/outer/34097_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_redblack.png"}, "21171": {"iconFile": "res:/UI/Asset/mannequin/outer/33800_male_outer_JacketALM01_Types_JacketALM01_BlackSilver.png"}, "3438": {"iconFile": "res:/ui/texture/icons/78_64_4.png"}, "3439": {"iconFile": "res:/ui/texture/icons/78_64_5.png"}, "21172": {"iconFile": "res:/UI/Asset/mannequin/outer/33799_male_outer_JacketALM01_Types_JacketALM01_BrownBlackGold.png"}, "3433": {"iconFile": "res:/ui/texture/icons/76_64_1.png"}, "3435": {"iconFile": "res:/ui/texture/icons/78_64_1.png"}, "3436": {"iconFile": "res:/ui/texture/icons/78_64_2.png"}, "3437": {"iconFile": "res:/ui/texture/icons/78_64_3.png"}, "2037": {"iconFile": "res:/ui/texture/icons/34_64_5.png"}, "2036": {"iconFile": "res:/ui/texture/icons/33_128_4.png"}, "2031": {"iconFile": "res:/ui/texture/icons/22_32_28.png"}, "2030": {"iconFile": "res:/ui/texture/icons/22_32_27.png"}, "2039": {"iconFile": "res:/ui/texture/icons/34_64_7.png"}, "2038": {"iconFile": "res:/ui/texture/icons/34_64_6.png"}, "21426": {"iconFile": "res:/UI/Texture/Icons/remote_armor_repair.png"}, "21424": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/35681_male_topMiddle_ShirtQM01_Types_soerfm02.png"}, "21425": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/35682_female_TopMiddle_ShirtQF01_Types_soerff02.png"}, "3236": {"iconFile": "res:/ui/texture/icons/64_64_7.png"}, "3237": {"iconFile": "res:/ui/texture/icons/64_64_8.png"}, "3234": {"iconFile": "res:/ui/texture/icons/64_64_5.png"}, "3235": {"iconFile": "res:/ui/texture/icons/64_64_6.png"}, "20977": {"iconFile": "res:/UI/Asset/mannequin/feet/33064_female_Feet_BootsMilF02_Types_BootsMilF02_bootini.png"}, "10084": {"iconFile": "res:/ui/texture/icons/96_64_6.png"}, "20974": {"iconFile": "res:/UI/Texture/Icons/Icon_64px_NEO.png"}, "20973": {"iconFile": "res:/UI/Texture/Icons/Icon_64px_Fireworks.png"}, "20971": {"iconFile": "res:/UI/Texture/Icons/108_64_22.png"}, "10085": {"iconFile": "res:/ui/texture/icons/96_64_5.png"}, "10086": {"iconFile": "res:/ui/texture/icons/96_64_7.png"}, "20979": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33063_female_TopMiddle_ShirtQF01_Types_shirtredstarf01.png"}, "10087": {"iconFile": "res:/ui/texture/icons/96_64_8.png"}, "1613": {"iconFile": "res:/ui/texture/corps/37_128_3.png"}, "10082": {"iconFile": "res:/ui/texture/icons/96_64_3.png"}, "21074": {"iconFile": "res:/ui/texture/icons/109_64_1.png"}, "10083": {"iconFile": "res:/ui/texture/icons/96_64_4.png"}, "3131": {"iconFile": "res:/ui/texture/icons/61_128_1.png"}, "3130": {"iconFile": "res:/ui/texture/icons/60_128_4.png"}, "1322": {"iconFile": "res:/ui/texture/icons/16_64_6.png"}, "1323": {"iconFile": "res:/ui/texture/icons/16_64_7.png"}, "1320": {"iconFile": "res:/ui/texture/icons/16_64_4.png"}, "1321": {"iconFile": "res:/ui/texture/icons/16_64_5.png"}, "1326": {"iconFile": "res:/ui/texture/icons/16_64_10.png"}, "1327": {"iconFile": "res:/ui/texture/icons/16_64_11.png"}, "1324": {"iconFile": "res:/ui/texture/icons/16_64_8.png"}, "1325": {"iconFile": "res:/ui/texture/icons/16_64_9.png"}, "1328": {"iconFile": "res:/ui/texture/icons/16_64_12.png"}, "1329": {"iconFile": "res:/ui/texture/icons/16_64_13.png"}, "21582": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41036_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V2_.png"}, "1621": {"iconFile": "res:/ui/texture/corps/37_128_4.png"}, "1524": {"iconFile": "res:/ui/texture/corps/32_128_1.png"}, "1525": {"iconFile": "res:/ui/texture/corps/32_128_4.png"}, "1526": {"iconFile": "res:/ui/texture/corps/33_128_2.png"}, "1527": {"iconFile": "res:/ui/texture/corps/30_128_1.png"}, "1520": {"iconFile": "res:/ui/texture/corps/25_128_2.png"}, "1521": {"iconFile": "res:/ui/texture/corps/38_128_2.png"}, "1522": {"iconFile": "res:/ui/texture/corps/25_128_3.png"}, "1523": {"iconFile": "res:/ui/texture/corps/31_128_2.png"}, "1528": {"iconFile": "res:/ui/texture/corps/31_128_4.png"}, "1529": {"iconFile": "res:/ui/texture/corps/32_128_2.png"}, "3953": {"iconFile": "res:/ui/texture/icons/95_64_14.png"}, "3952": {"iconFile": "res:/ui/texture/icons/95_64_12.png"}, "3951": {"iconFile": "res:/ui/texture/icons/95_64_10.png"}, "3950": {"iconFile": "res:/ui/texture/icons/95_64_8.png"}, "3955": {"iconFile": "res:/ui/texture/icons/95_64_5.png"}, "3954": {"iconFile": "res:/ui/texture/icons/95_64_15.png"}, "3340": {"iconFile": "res:/ui/texture/icons/74_64_2.png"}, "21350": {"iconFile": "res:/UI/Asset/mannequin/outer/34159_male_outer_JacketMFBR01_Types_JacketMFBR01_Gallente.png"}, "21351": {"iconFile": "res:/UI/Asset/mannequin/outer/34160_male_outer_JacketMFBR01_Types_JacketMFBR01_ORE.png"}, "21353": {"iconFile": "res:/UI/Asset/mannequin/outer/34162_male_outer_JacketMFBR01_Types_JacketMFBR01_Mordus.png"}, "10857": {"iconFile": "res:/UI/Texture/Icons/dust_icon_tur_blaster_l.png"}, "10856": {"iconFile": "res:/UI/Texture/Icons/dust_icon_tur_railgun_l.png"}, "10855": {"iconFile": "res:/UI/Texture/Icons/dust_icon_tur_railgun_s.png"}, "10854": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_shieldhardener.png"}, "10853": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_prop_overdrive.png"}, "10738": {"iconFile": "res:/UI/Asset/mannequin/hair_4096_1005.png"}, "10851": {"iconFile": "res:/UI/Texture/Icons/dust_icon_dropsuit_logistics.png"}, "10850": {"iconFile": "res:/UI/Texture/Icons/dust_icon_eq_nanohive.png"}, "10739": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_LeftDark.png"}, "10859": {"iconFile": "res:/UI/Texture/Icons/dust_icon_dropsuit_heavy.png"}, "10858": {"iconFile": "res:/UI/Texture/Icons/dust_icon_tur_blaster_s.png"}, "21358": {"iconFile": "res:/UI/Asset/mannequin/outer/34167_male_outer_JacketMFBR01_Types_JacketMFBR01_Guristas.png"}, "2974": {"iconFile": "res:/ui/texture/icons/36_64_16.png"}, "21359": {"iconFile": "res:/UI/Asset/mannequin/outer/34168_male_outer_JacketMFBR01_Types_JacketMFBR01_Serpentis.png"}, "21031": {"iconFile": "res:/UI/Texture/Icons/icons111_05.png"}, "21030": {"iconFile": "res:/UI/Texture/Icons/icons111_04.png"}, "21032": {"iconFile": "res:/UI/Texture/Icons/icons111_06.png"}, "21421": {"iconFile": "res:/UI/Texture/Icons/118_64_7.png"}, "21391": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34354_male_bottomOuter_PantsPrtm01_Types_PantsPrtm01_bloodraiders.png"}, "10927": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_laserrifle.png"}, "10926": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_shotgun.png"}, "10929": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_heavymachinegun.png"}, "10928": {"iconFile": "res:/UI/Texture/Icons/dust_icon_eq_naniteinjector.png"}, "2355": {"iconFile": "res:/ui/texture/icons/7_64_4.png"}, "10679": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4224_female_TopMiddle_TanktopF01_Types_TanktopF01_p02.png"}, "10678": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4223_female_TopMiddle_TanktopF01_Types_TanktopF01_p01.png"}, "10673": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4218_female_TopMiddle_TanktopF01_Types_TanktopF01_blue.png"}, "10672": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4217_female_TopMiddle_TanktopF01_Types_TanktopF01_blackleather.png"}, "10671": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4216_female_TopMiddle_TanktopF01_Types_TanktopF01_black.png"}, "10677": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4222_female_TopMiddle_TanktopF01_Types_TanktopF01_orange.png"}, "10676": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4221_female_TopMiddle_TanktopF01_Types_TanktopF01_green.png"}, "10675": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4220_female_TopMiddle_TanktopF01_Types_TanktopF01_gray.png"}, "10674": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4219_female_TopMiddle_TanktopF01_Types_TanktopF01_brown.png"}, "21149": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33768_female_TopMiddle_ShirtQF01_Types_neof2014B.png"}, "3345": {"iconFile": "res:/ui/texture/icons/74_64_7.png"}, "3739": {"iconFile": "res:/ui/texture/icons/83_64_1.png"}, "3738": {"iconFile": "res:/ui/texture/icons/84_64_7.png"}, "3737": {"iconFile": "res:/ui/texture/icons/84_64_3.png"}, "3736": {"iconFile": "res:/ui/texture/icons/84_64_2.png"}, "3735": {"iconFile": "res:/ui/texture/icons/84_64_4.png"}, "3734": {"iconFile": "res:/ui/texture/icons/84_64_6.png"}, "3733": {"iconFile": "res:/ui/texture/icons/82_64_6.png"}, "3732": {"iconFile": "res:/ui/texture/icons/82_64_5.png"}, "3731": {"iconFile": "res:/ui/texture/icons/82_64_12.png"}, "3730": {"iconFile": "res:/ui/texture/icons/82_64_11.png"}, "2648": {"iconFile": "res:/ui/texture/icons/48_64_11.png"}, "2649": {"iconFile": "res:/ui/texture/icons/48_64_10.png"}, "10073": {"iconFile": "res:/ui/texture/icons/99_64_6.png"}, "10075": {"iconFile": "res:/ui/texture/icons/99_64_5.png"}, "10074": {"iconFile": "res:/ui/texture/icons/99_64_2.png"}, "10077": {"iconFile": "res:/ui/texture/icons/99_64_8.png"}, "10076": {"iconFile": "res:/ui/texture/icons/99_64_3.png"}, "10079": {"iconFile": "res:/ui/texture/icons/99_64_4.png"}, "10078": {"iconFile": "res:/ui/texture/icons/99_64_1.png"}, "2645": {"iconFile": "res:/ui/texture/icons/48_64_14.png"}, "2646": {"iconFile": "res:/ui/texture/icons/48_64_13.png"}, "2647": {"iconFile": "res:/ui/texture/icons/48_64_12.png"}, "21369": {"iconFile": "res:/UI/Asset/mannequin/outer/34179_female_Outer_JacketFBR01_Types_JacketFBR01_bloodraiders.png"}, "21368": {"iconFile": "res:/UI/Asset/mannequin/outer/34178_female_Outer_JacketFBR01_Types_JacketFBR01_sansha.png"}, "21499": {"iconFile": "res:/UI/Asset/mannequin/outer/37811_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_Copper.png"}, "21498": {"iconFile": "res:/UI/Asset/mannequin/outer/37810_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_Black.png"}, "21361": {"iconFile": "res:/UI/Asset/mannequin/outer/34170_female_Outer_JacketFBR01_Types_JacketFBR01_amarr.png"}, "21360": {"iconFile": "res:/UI/Asset/mannequin/outer/34169_female_Outer_JacketFBR01_Types_JacketFBR01_caldari.png"}, "21363": {"iconFile": "res:/UI/Asset/mannequin/outer/34173_female_Outer_JacketFBR01_Types_JacketFBR01_ore.png"}, "21362": {"iconFile": "res:/UI/Asset/mannequin/outer/34171_female_Outer_JacketFBR01_Types_JacketFBR01_minmatar.png"}, "21365": {"iconFile": "res:/UI/Asset/mannequin/outer/34175_female_Outer_JacketFBR01_Types_JacketFBR01_mordus.png"}, "21364": {"iconFile": "res:/UI/Asset/mannequin/outer/34174_female_Outer_JacketFBR01_Types_JacketFBR01_soe.png"}, "21367": {"iconFile": "res:/UI/Asset/mannequin/outer/34177_female_Outer_JacketFBR01_Types_JacketFBR01_angel.png"}, "21366": {"iconFile": "res:/UI/Asset/mannequin/outer/34176_female_Outer_JacketFBR01_Types_JacketFBR01_interbus.png"}, "21567": {"iconFile": "res:/ui/texture/icons/124_64_5.png"}, "21566": {"iconFile": "res:/ui/texture/icons/123_64_11.png"}, "21565": {"iconFile": "res:/ui/texture/icons/123_64_10.png"}, "21564": {"iconFile": "res:/ui/texture/icons/123_64_9.png"}, "10109": {"iconFile": "res:/ui/texture/icons/97_64_14.png"}, "10108": {"iconFile": "res:/ui/texture/icons/97_64_13.png"}, "21561": {"iconFile": "res:/ui/texture/icons/123_64_6.png"}, "21560": {"iconFile": "res:/ui/texture/icons/123_64_5.png"}, "10105": {"iconFile": "res:/ui/texture/icons/97_64_10.png"}, "10104": {"iconFile": "res:/ui/texture/icons/97_64_9.png"}, "10107": {"iconFile": "res:/ui/texture/icons/97_64_12.png"}, "10106": {"iconFile": "res:/ui/texture/icons/97_64_11.png"}, "10101": {"iconFile": "res:/ui/texture/icons/97_64_6.png"}, "10100": {"iconFile": "res:/ui/texture/icons/97_64_5.png"}, "10103": {"iconFile": "res:/ui/texture/icons/97_64_8.png"}, "10102": {"iconFile": "res:/ui/texture/icons/97_64_7.png"}, "10600": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4105_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_graystripes.png"}, "10581": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3999_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Blackwax.png"}, "10580": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4033_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_blackleather.png"}, "10583": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4035_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_graphite.png"}, "10582": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4034_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_brownleather.png"}, "10585": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4036_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_greengold.png"}, "10584": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3998_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Gray.png"}, "10587": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4070_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_matblack.png"}, "10586": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4069_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_marine.png"}, "10589": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4072_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_matred.png"}, "10588": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4071_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_matblue.png"}, "5030": {"iconFile": "res:/Texture/Landmark/A33colonialruins.jpg"}, "10608": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4113_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_redleather.png"}, "5031": {"iconFile": "res:/Texture/Landmark/serpentscoil.jpg"}, "10609": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4114_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_redstripes.png"}, "1061": {"iconFile": "res:/ui/texture/icons/12_64_8.png"}, "1063": {"iconFile": "res:/ui/texture/icons/5_64_16.png"}, "21440": {"iconFile": "res:/UI/Texture/Icons/5_64_19.png"}, "10038": {"iconFile": "res:/ui/texture/icons/97_64_12.png"}, "1668": {"iconFile": "res:/ui/texture/icons/1_64_5.png"}, "1667": {"iconFile": "res:/ui/texture/icons/4_64_5.png"}, "1666": {"iconFile": "res:/ui/texture/icons/5_64_2.png"}, "1665": {"iconFile": "res:/ui/texture/icons/5_64_6.png"}, "1664": {"iconFile": "res:/ui/texture/icons/30_64_16.png"}, "1663": {"iconFile": "res:/ui/texture/icons/30_64_15.png"}, "1662": {"iconFile": "res:/ui/texture/icons/31_64_1.png"}, "1661": {"iconFile": "res:/ui/texture/icons/31_64_4.png"}, "1660": {"iconFile": "res:/ui/texture/icons/31_64_2.png"}, "1084": {"iconFile": "res:/ui/texture/icons/11_64_16.png"}, "2828": {"iconFile": "res:/ui/texture/icons/52_64_2.png"}, "2829": {"iconFile": "res:/ui/texture/icons/52_64_3.png"}, "2827": {"iconFile": "res:/ui/texture/icons/52_64_1.png"}, "1401": {"iconFile": "res:/ui/texture/icons/22_32_24.png"}, "1400": {"iconFile": "res:/ui/texture/icons/2_64_7.png"}, "1406": {"iconFile": "res:/ui/texture/icons/25_64_2.png"}, "1405": {"iconFile": "res:/ui/texture/icons/12_64_7.png"}, "1339": {"iconFile": "res:/ui/texture/icons/20_64_15.png"}, "1338": {"iconFile": "res:/ui/texture/icons/20_64_11.png"}, "1335": {"iconFile": "res:/ui/texture/icons/20_64_9.png"}, "1334": {"iconFile": "res:/ui/texture/icons/20_64_5.png"}, "1337": {"iconFile": "res:/ui/texture/icons/20_64_7.png"}, "1336": {"iconFile": "res:/ui/texture/icons/20_64_13.png"}, "1331": {"iconFile": "res:/ui/texture/icons/16_64_15.png"}, "1330": {"iconFile": "res:/ui/texture/icons/16_64_14.png"}, "1333": {"iconFile": "res:/ui/texture/icons/20_64_1.png"}, "1332": {"iconFile": "res:/ui/texture/icons/16_64_16.png"}, "10753": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4167_male_bottomOuter_PantsMilM01_Types_PantsMilM01_goldblack.png"}, "3261": {"iconFile": "res:/ui/texture/icons/69_64_12.png"}, "3260": {"iconFile": "res:/ui/texture/icons/69_64_11.png"}, "33": {"iconFile": "res:/ui/texture/icons/50_64_11.png"}, "31": {"iconFile": "res:/ui/texture/icons/6_64_10.png"}, "30": {"iconFile": "res:/ui/texture/icons/11_64_8.png"}, "3263": {"iconFile": "res:/ui/texture/icons/69_64_14.png"}, "34": {"iconFile": "res:/ui/texture/icons/8_64_16.png"}, "1537": {"iconFile": "res:/ui/texture/corps/10_128_3.png"}, "1536": {"iconFile": "res:/ui/texture/corps/29_128_3.png"}, "1535": {"iconFile": "res:/ui/texture/corps/29_128_2.png"}, "1534": {"iconFile": "res:/ui/texture/corps/29_128_1.png"}, "1533": {"iconFile": "res:/ui/texture/corps/30_128_4.png"}, "1532": {"iconFile": "res:/ui/texture/corps/30_128_2.png"}, "1530": {"iconFile": "res:/ui/texture/corps/25_128_1.png"}, "10039": {"iconFile": "res:/ui/texture/icons/97_64_13.png"}, "1539": {"iconFile": "res:/ui/texture/corps/35_128_2.png"}, "1538": {"iconFile": "res:/ui/texture/corps/31_128_1.png"}, "21445": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36480_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_blueorange.png"}, "3267": {"iconFile": "res:/ui/texture/icons/70_64_1.png"}, "3266": {"iconFile": "res:/ui/texture/icons/68_64_1.png"}, "3268": {"iconFile": "res:/ui/texture/icons/70_64_2.png"}, "10037": {"iconFile": "res:/ui/texture/icons/97_64_11.png"}, "10036": {"iconFile": "res:/ui/texture/icons/97_64_10.png"}, "21593": {"iconFile": "res:/UI/Texture/Icons/126_64_1.png"}, "21459": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36495_male_bottomOuter_PantsEngM01_Types_PantsEngM01_camo.png"}, "21458": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/36494_male_bottomOuter_PantsEngM01_Types_PantsEngM01_redwhite.png"}, "21448": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36483_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_cyan.png"}, "10840": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4366_female_TopMiddle_ShirtQF01_Types_shirtqf02.png"}, "10841": {"iconFile": "res:/UI/Asset/mannequin/topouter/4368_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_whiteblacknexon.png"}, "10842": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4365_male_TopMiddle_ShirtQM01_Types_shirtqm02.png"}, "10843": {"iconFile": "res:/UI/Asset/mannequin/topouter/4367_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_whiteblacknexon.png"}, "10847": {"iconFile": "res:/UI/Texture/Icons/infantry_gear.png"}, "10848": {"iconFile": "res:/UI/Texture/Icons/dust_icon_eq_dropuplink.png"}, "10849": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_forgegun.png"}, "3200": {"iconFile": "res:/ui/texture/icons/68_64_16.png"}, "21449": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36484_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_oregreen.png"}, "21022": {"iconFile": "res:/UI/Texture/Icons/110_128_02.png"}, "21023": {"iconFile": "res:/UI/Texture/Icons/110_128_03.png"}, "21021": {"iconFile": "res:/UI/Texture/Icons/110_128_01.png"}, "21026": {"iconFile": "res:/ui/texture/icons/107_64_11.png"}, "21027": {"iconFile": "res:/ui/texture/icons/107_64_12.png"}, "21025": {"iconFile": "res:/ui/texture/icons/107_64_10.png"}, "3636": {"iconFile": "res:/ui/texture/icons/76_64_7.png"}, "21028": {"iconFile": "res:/UI/Texture/Icons/icons111_02.png"}, "21029": {"iconFile": "res:/UI/Texture/Icons/icons111_03.png"}, "3631": {"iconFile": "res:/ui/texture/icons/76_64_6.png"}, "2340": {"iconFile": "res:/ui/texture/icons/43_64_13.png"}, "10939": {"iconFile": "res:/UI/Texture/Icons/dust_icon_tur_missile.png"}, "10934": {"iconFile": "res:/ui/texture/icons/105_32_48.png"}, "10935": {"iconFile": "res:/ui/texture/icons/105_32_49.png"}, "10936": {"iconFile": "res:/UI/Texture/Icons/dust_icon_eq_remoteexplosive.png"}, "10937": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_massdriver.png"}, "10930": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_booster.png"}, "10932": {"iconFile": "res:/ui/texture/icons/105_32_46.png"}, "10933": {"iconFile": "res:/ui/texture/icons/105_32_47.png"}, "3372": {"iconFile": "res:/ui/texture/corps/47_128_4.png"}, "21611": {"iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorWarpDisruption.png"}, "21158": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33783_male_bottomOuter_PantsCLM01_Types_PantsCLM01_Graphite.png"}, "21159": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33782_male_bottomOuter_PantsCLM01_Types_PantsCLM01_GreenCamo.png"}, "21156": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33785_male_bottomOuter_PantsCLM01_Types_PantsCLM01_BlackLeather.png"}, "21157": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33784_male_bottomOuter_PantsCLM01_Types_PantsCLM01_DarkRed.png"}, "21154": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33787_male_bottomOuter_PantsALM01_Types_PantsALM01_Royal.png"}, "21155": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33786_male_bottomOuter_PantsALM01_Types_PantsALM01_WhiteBlackGold.png"}, "21152": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33789_male_bottomOuter_PantsALM01_Types_PantsALM01_BlueShiny.png"}, "21153": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33788_male_bottomOuter_PantsALM01_Types_PantsALM01_DarkredBlackGold.png"}, "21150": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33790_male_bottomOuter_PantsALM01_Types_PantsALM01_BlackSilver.png"}, "10736": {"iconFile": "res:/UI/Asset/mannequin/hair_4086_947.png"}, "10062": {"iconFile": "res:/ui/texture/icons/99_64_4.png"}, "10063": {"iconFile": "res:/ui/texture/icons/99_64_5.png"}, "2659": {"iconFile": "res:/ui/texture/icons/48_64_15.png"}, "10061": {"iconFile": "res:/ui/texture/icons/99_64_3.png"}, "10066": {"iconFile": "res:/ui/texture/icons/99_64_8.png"}, "21481": {"iconFile": "res:/UI/Texture/Icons/plex.png"}, "10064": {"iconFile": "res:/ui/texture/icons/99_64_6.png"}, "10065": {"iconFile": "res:/ui/texture/icons/99_64_7.png"}, "2653": {"iconFile": "res:/ui/texture/icons/48_64_6.png"}, "2652": {"iconFile": "res:/ui/texture/icons/48_64_7.png"}, "2651": {"iconFile": "res:/ui/texture/icons/48_64_8.png"}, "2650": {"iconFile": "res:/ui/texture/icons/48_64_9.png"}, "2657": {"iconFile": "res:/ui/texture/icons/48_64_3.png"}, "2656": {"iconFile": "res:/ui/texture/icons/48_64_4.png"}, "2655": {"iconFile": "res:/ui/texture/icons/48_64_5.png"}, "2654": {"iconFile": "res:/ui/texture/icons/48_64_16.png"}, "21378": {"iconFile": "res:/ui/texture/icons/1337_64_22.png"}, "21379": {"iconFile": "res:/ui/texture/icons/1337_64_21.png"}, "21373": {"iconFile": "res:/UI/Asset/mannequin/outer/34172_female_Outer_JacketFBR01_Types_JacketFBR01_gallente.png"}, "21370": {"iconFile": "res:/UI/Asset/mannequin/outer/34180_female_Outer_JacketFBR01_Types_JacketFBR01_guristas.png"}, "138": {"iconFile": "res:/ui/texture/icons/4_64_1.png"}, "21376": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/34211_female_TopMiddle_ShirtQF01_Types_lvf02.png"}, "21563": {"iconFile": "res:/ui/texture/icons/123_64_8.png"}, "21375": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/34210_male_TopMiddle_ShirtQM01_Types_lvm02.png"}, "10664": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4210_female_TopMiddle_ShirtGF01_Types_ShirtGF01_olive.png"}, "10665": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4211_female_TopMiddle_ShirtGF01_Types_ShirtGF01_orange.png"}, "10666": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4212_female_TopMiddle_ShirtGF01_Types_ShirtGF01_p_darkcaldari.png"}, "10667": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4213_female_TopMiddle_ShirtGF01_Types_ShirtGF01_p_desertcamo.png"}, "10660": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4206_female_TopMiddle_ShirtGF01_Types_ShirtGF01_darkred.png"}, "10661": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4207_female_TopMiddle_ShirtGF01_Types_ShirtGF01_gray.png"}, "10662": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4208_female_TopMiddle_ShirtGF01_Types_ShirtGF01_green.png"}, "10663": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4209_female_TopMiddle_ShirtGF01_Types_ShirtGF01_khaki.png"}, "10668": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4214_female_TopMiddle_ShirtGF01_Types_ShirtGF01_red.png"}, "10669": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4215_female_TopMiddle_ShirtGF01_Types_ShirtGF01_white.png"}, "21570": {"iconFile": "res:/ui/texture/icons/124_64_9.png"}, "21571": {"iconFile": "res:/ui/texture/icons/124_64_10.png"}, "21572": {"iconFile": "res:/ui/texture/icons/124_64_11.png"}, "21573": {"iconFile": "res:/ui/texture/icons/124_64_13.png"}, "21574": {"iconFile": "res:/ui/texture/icons/124_64_14.png"}, "21575": {"iconFile": "res:/ui/texture/icons/124_64_15.png"}, "10118": {"iconFile": "res:/ui/texture/icons/98_64_7.png"}, "10119": {"iconFile": "res:/ui/texture/icons/98_64_8.png"}, "10116": {"iconFile": "res:/ui/texture/icons/98_64_5.png"}, "10117": {"iconFile": "res:/ui/texture/icons/98_64_6.png"}, "10115": {"iconFile": "res:/ui/texture/icons/98_64_4.png"}, "10113": {"iconFile": "res:/ui/texture/icons/98_64_2.png"}, "10110": {"iconFile": "res:/ui/texture/icons/97_64_15.png"}, "10111": {"iconFile": "res:/ui/texture/icons/97_64_16.png"}, "3034": {"iconFile": "res:/ui/texture/icons/58_64_14.png"}, "10592": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4075_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_white.png"}, "10593": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4085_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Black.png"}, "10590": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4073_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_redgold.png"}, "10591": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4074_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_silver.png"}, "10596": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4102_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_blue.png"}, "10597": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4078_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Camo.png"}, "10594": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4076_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_blackred.png"}, "10595": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4101_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_blackwhite.png"}, "20995": {"iconFile": "res:/UI/Texture/Corps/zumari_force_projection.png"}, "20994": {"iconFile": "res:/UI/Texture/Corps/villore_sec_ops.png"}, "10598": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4103_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_graphite.png"}, "10599": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4104_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_gray.png"}, "20991": {"iconFile": "res:/UI/Texture/Corps/seituoda_taskforce.png"}, "20990": {"iconFile": "res:/UI/Texture/Corps/sanmatar_kelkoons.png"}, "20993": {"iconFile": "res:/UI/Texture/Corps/tronhadar_free_guard.png"}, "20992": {"iconFile": "res:/UI/Texture/Corps/templis_dragonaurs.png"}, "2908": {"iconFile": "res:/ui/texture/icons/7_64_3.png"}, "88": {"iconFile": "res:/ui/texture/icons/4_64_8.png"}, "89": {"iconFile": "res:/ui/texture/icons/1_64_4.png"}, "82": {"iconFile": "res:/ui/texture/icons/2_64_4.png"}, "83": {"iconFile": "res:/ui/texture/icons/1_64_15.png"}, "80": {"iconFile": "res:/ui/texture/icons/1_64_11.png"}, "81": {"iconFile": "res:/ui/texture/icons/2_64_2.png"}, "86": {"iconFile": "res:/ui/texture/icons/1_64_16.png"}, "87": {"iconFile": "res:/ui/texture/icons/1_64_14.png"}, "84": {"iconFile": "res:/ui/texture/icons/2_64_3.png"}, "85": {"iconFile": "res:/ui/texture/icons/2_64_1.png"}, "21587": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41053_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V5_.png"}, "1658": {"iconFile": "res:/ui/texture/icons/30_64_11.png"}, "1659": {"iconFile": "res:/ui/texture/icons/30_64_10.png"}, "1652": {"iconFile": "res:/ui/texture/icons/31_64_5.png"}, "1653": {"iconFile": "res:/ui/texture/icons/31_64_7.png"}, "1650": {"iconFile": "res:/ui/texture/icons/30_64_13.png"}, "1651": {"iconFile": "res:/ui/texture/icons/30_64_12.png"}, "1656": {"iconFile": "res:/ui/texture/icons/31_64_6.png"}, "1657": {"iconFile": "res:/ui/texture/icons/31_64_8.png"}, "1654": {"iconFile": "res:/ui/texture/icons/30_64_14.png"}, "1655": {"iconFile": "res:/ui/texture/icons/30_64_9.png"}, "3214": {"iconFile": "res:/ui/texture/icons/62_64_5.png"}, "3215": {"iconFile": "res:/ui/texture/icons/62_64_6.png"}, "3216": {"iconFile": "res:/ui/texture/icons/62_64_7.png"}, "3217": {"iconFile": "res:/ui/texture/icons/62_64_8.png"}, "2839": {"iconFile": "res:/ui/texture/icons/52_64_13.png"}, "2838": {"iconFile": "res:/ui/texture/icons/52_64_12.png"}, "2837": {"iconFile": "res:/ui/texture/icons/52_64_11.png"}, "2836": {"iconFile": "res:/ui/texture/icons/52_64_10.png"}, "2835": {"iconFile": "res:/ui/texture/icons/52_64_9.png"}, "2834": {"iconFile": "res:/ui/texture/icons/52_64_8.png"}, "2833": {"iconFile": "res:/ui/texture/icons/52_64_7.png"}, "2832": {"iconFile": "res:/ui/texture/icons/52_64_6.png"}, "2831": {"iconFile": "res:/ui/texture/icons/52_64_5.png"}, "2830": {"iconFile": "res:/ui/texture/icons/52_64_4.png"}, "1436": {"iconFile": "res:/ui/texture/icons/27_64_1.png"}, "1437": {"iconFile": "res:/ui/texture/icons/27_64_2.png"}, "1434": {"iconFile": "res:/ui/texture/icons/26_64_3.png"}, "1435": {"iconFile": "res:/ui/texture/icons/26_64_4.png"}, "1432": {"iconFile": "res:/ui/texture/icons/26_64_1.png"}, "1433": {"iconFile": "res:/ui/texture/icons/26_64_2.png"}, "1438": {"iconFile": "res:/ui/texture/icons/27_64_3.png"}, "1439": {"iconFile": "res:/ui/texture/icons/19_128_1.png"}, "21456": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36491_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_OreOrange.png"}, "1348": {"iconFile": "res:/ui/texture/icons/21_64_10.png"}, "1349": {"iconFile": "res:/ui/texture/icons/21_64_14.png"}, "1340": {"iconFile": "res:/ui/texture/icons/20_64_3.png"}, "1341": {"iconFile": "res:/ui/texture/icons/21_64_1.png"}, "1342": {"iconFile": "res:/ui/texture/icons/21_64_5.png"}, "1343": {"iconFile": "res:/ui/texture/icons/21_64_9.png"}, "1344": {"iconFile": "res:/ui/texture/icons/21_64_13.png"}, "1345": {"iconFile": "res:/ui/texture/icons/12_64_16.png"}, "1346": {"iconFile": "res:/ui/texture/icons/21_64_2.png"}, "1347": {"iconFile": "res:/ui/texture/icons/21_64_6.png"}, "21455": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36490_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_OreGreen.png"}, "1502": {"iconFile": "res:/ui/texture/corps/12_128_1.png"}, "1503": {"iconFile": "res:/ui/texture/corps/13_128_1.png"}, "1500": {"iconFile": "res:/ui/texture/corps/16_128_4.png"}, "1501": {"iconFile": "res:/ui/texture/corps/18_128_1.png"}, "1506": {"iconFile": "res:/ui/texture/corps/12_128_4.png"}, "1507": {"iconFile": "res:/ui/texture/corps/15_128_3.png"}, "1504": {"iconFile": "res:/ui/texture/corps/12_128_3.png"}, "1505": {"iconFile": "res:/ui/texture/corps/12_128_2.png"}, "1508": {"iconFile": "res:/ui/texture/corps/13_128_4.png"}, "1509": {"iconFile": "res:/ui/texture/corps/19_128_2.png"}, "21453": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36488_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_Camo.png"}, "21452": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36487_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_RedWhite.png"}, "21451": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36486_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_BlueOrange.png"}, "21450": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/36485_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_oreorange.png"}, "21014": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33109_female_TopMiddle_ShirtQF01_Types_shirtqf03.png"}, "21013": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33107_male_TopMiddle_ShirtQM01_Types_shirtqm03.png"}, "21012": {"iconFile": "res:/UI/Asset/mannequin/accessories_glasses/32853_female_Accessories_Glasses_Monocle_F_T02_Types_Monocle_F_T02_black_right.png"}, "21011": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Monocle_M_T02_Types_Monocle_M_T02_black_right.png"}, "3626": {"iconFile": "res:/ui/texture/icons/76_64_9.png"}, "2330": {"iconFile": "res:/ui/texture/icons/43_64_3.png"}, "2331": {"iconFile": "res:/ui/texture/icons/43_64_4.png"}, "2332": {"iconFile": "res:/ui/texture/icons/43_64_5.png"}, "2333": {"iconFile": "res:/ui/texture/icons/43_64_6.png"}, "2334": {"iconFile": "res:/ui/texture/icons/43_64_7.png"}, "2335": {"iconFile": "res:/ui/texture/icons/43_64_8.png"}, "2336": {"iconFile": "res:/ui/texture/icons/43_64_9.png"}, "2337": {"iconFile": "res:/ui/texture/icons/43_64_10.png"}, "2338": {"iconFile": "res:/ui/texture/icons/43_64_11.png"}, "2339": {"iconFile": "res:/ui/texture/icons/43_64_12.png"}, "10948": {"iconFile": "res:/UI/Texture/Icons/dust_icon_aug_voicetransmitter.png"}, "10941": {"iconFile": "res:/ui/texture/icons/107_64_2.png"}, "1591": {"iconFile": "res:/ui/texture/corps/9_128_4.png"}, "10942": {"iconFile": "res:/ui/texture/icons/107_64_3.png"}, "10947": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_regulator.png"}, "10946": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_codebreaker.png"}, "21484": {"iconFile": "res:/ui/texture/icons/118_64_10.png"}, "3717": {"iconFile": "res:/ui/texture/icons/76_64_12.png"}, "3716": {"iconFile": "res:/ui/texture/icons/76_64_14.png"}, "21485": {"iconFile": "res:/ui/texture/icons/118_64_11.png"}, "3719": {"iconFile": "res:/ui/texture/icons/76_64_10.png"}, "10060": {"iconFile": "res:/ui/texture/icons/99_64_2.png"}, "21169": {"iconFile": "res:/UI/Asset/mannequin/feet/33772_male_Feet_BootsCLM01_Types_BootsCLM01_Graphite.png"}, "2658": {"iconFile": "res:/ui/texture/icons/48_64_2.png"}, "21163": {"iconFile": "res:/UI/Asset/mannequin/feet/33778_male_Feet_BootsALM01_Types_BootsALM01_GreySilver.png"}, "21162": {"iconFile": "res:/UI/Asset/mannequin/feet/33779_male_Feet_BootsALM01_Types_BootsALM01_DarkRedBlack.png"}, "21161": {"iconFile": "res:/UI/Asset/mannequin/feet/33780_male_Feet_BootsALM01_Types_BootsALM01_BrownGold.png"}, "21160": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/33781_male_bottomOuter_PantsCLM01_Types_PantsCLM01_White.png"}, "21167": {"iconFile": "res:/UI/Asset/mannequin/feet/33774_male_Feet_BootsCLM01_Types_BootsCLM01_BlueShiny.png"}, "21166": {"iconFile": "res:/UI/Asset/mannequin/feet/33775_male_Feet_BootsCLM01_Types_BootsCLM01_Black.png"}, "21165": {"iconFile": "res:/UI/Asset/mannequin/feet/33776_male_Feet_BootsALM01_Types_BootsALM01_WhiteGold.png"}, "21164": {"iconFile": "res:/UI/Asset/mannequin/feet/33777_male_Feet_BootsALM01_Types_BootsALM01_Royal.png"}, "21482": {"iconFile": "res:/ui/texture/icons/118_64_5.png"}, "21483": {"iconFile": "res:/ui/texture/icons/118_64_9.png"}, "2244": {"iconFile": "res:/ui/texture/icons/41_64_3.png"}, "2243": {"iconFile": "res:/ui/texture/icons/27_64_13.png"}, "21347": {"iconFile": "res:/UI/Asset/mannequin/outer/34156_male_outer_JacketMFBR01_Types_JacketMFBR01_Caldari.png"}, "10059": {"iconFile": "res:/ui/texture/icons/99_64_1.png"}, "10058": {"iconFile": "res:/ui/texture/icons/98_64_16.png"}, "10057": {"iconFile": "res:/ui/texture/icons/98_64_15.png"}, "10056": {"iconFile": "res:/ui/texture/icons/98_64_14.png"}, "10055": {"iconFile": "res:/ui/texture/icons/98_64_13.png"}, "10054": {"iconFile": "res:/ui/texture/icons/98_64_12.png"}, "10053": {"iconFile": "res:/ui/texture/icons/98_64_11.png"}, "10052": {"iconFile": "res:/ui/texture/icons/98_64_10.png"}, "10051": {"iconFile": "res:/ui/texture/icons/98_64_9.png"}, "10050": {"iconFile": "res:/ui/texture/icons/98_64_8.png"}, "21273": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34046_female_bottomMiddle_TightsF01_Types_TightsF01_orange.png"}, "21272": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34045_female_bottomMiddle_TightsF01_Types_TightsF01_light.png"}, "1189": {"iconFile": "res:/ui/texture/icons/10_64_13.png"}, "10610": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4115_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_whitestripes.png"}, "10613": {"iconFile": "res:/UI/Asset/mannequin/feet/4117_female_Feet_BootsMilF01_Types_BootsMilF01_blackred.png"}, "10612": {"iconFile": "res:/UI/Asset/mannequin/feet/4116_female_Feet_BootsMilF01_Types_BootsMilF01_blackgold.png"}, "10615": {"iconFile": "res:/UI/Asset/mannequin/feet/4119_female_Feet_BootsMilF01_Types_BootsMilF01_gold.png"}, "10614": {"iconFile": "res:/UI/Asset/mannequin/feet/4118_female_Feet_BootsMilF01_Types_BootsMilF01_blue.png"}, "10617": {"iconFile": "res:/UI/Asset/mannequin/feet/4121_female_Feet_BootsMilF01_Types_BootsMilF01_greenblack.png"}, "10616": {"iconFile": "res:/UI/Asset/mannequin/feet/4120_female_Feet_BootsMilF01_Types_BootsMilF01_graphwhite.png"}, "10619": {"iconFile": "res:/UI/Asset/mannequin/feet/4123_female_Feet_BootsMilF01_Types_BootsMilF01_matred.png"}, "2061": {"iconFile": "res:/ui/texture/icons/31_64_15.png"}, "2062": {"iconFile": "res:/ui/texture/icons/31_64_16.png"}, "2066": {"iconFile": "res:/ui/texture/icons/34_64_16.png"}, "21274": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34047_female_bottomMiddle_TightsF01_Types_TightsF01_pink.png"}, "1183": {"iconFile": "res:/ui/texture/icons/10_64_7.png"}, "21589": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41043_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V4_.png"}, "3371": {"iconFile": "res:/ui/texture/corps/47_128_3.png"}, "10123": {"iconFile": "res:/ui/texture/icons/98_64_12.png"}, "10122": {"iconFile": "res:/ui/texture/icons/98_64_11.png"}, "10121": {"iconFile": "res:/ui/texture/icons/98_64_10.png"}, "10120": {"iconFile": "res:/ui/texture/icons/98_64_9.png"}, "10127": {"iconFile": "res:/ui/texture/icons/98_64_16.png"}, "10126": {"iconFile": "res:/ui/texture/icons/98_64_15.png"}, "10125": {"iconFile": "res:/ui/texture/icons/98_64_14.png"}, "10124": {"iconFile": "res:/ui/texture/icons/98_64_13.png"}, "21278": {"iconFile": "res:/UI/Asset/mannequin/bottommiddle/34053_female_bottomMiddle_TightsF01_Types_TightsF01_thickpurple.png"}, "2666": {"iconFile": "res:/ui/texture/icons/50_64_6.png"}, "2667": {"iconFile": "res:/ui/texture/icons/50_64_7.png"}, "2664": {"iconFile": "res:/ui/texture/icons/50_64_4.png"}, "2665": {"iconFile": "res:/ui/texture/icons/50_64_5.png"}, "2662": {"iconFile": "res:/ui/texture/icons/50_64_2.png"}, "2663": {"iconFile": "res:/ui/texture/icons/50_64_3.png"}, "2660": {"iconFile": "res:/ui/texture/icons/48_64_1.png"}, "2661": {"iconFile": "res:/ui/texture/icons/50_64_1.png"}, "20986": {"iconFile": "res:/UI/Texture/Corps/circle_of_huskarl.png"}, "20987": {"iconFile": "res:/UI/Texture/Corps/crux_special_tasks_group.png"}, "20984": {"iconFile": "res:/UI/Texture/Corps/arkombine.png"}, "20985": {"iconFile": "res:/UI/Texture/Corps/bragian_order.png"}, "20982": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/33062_male_TopMiddle_ShirtQM01_Types_shirtredstarm01.png"}, "2668": {"iconFile": "res:/ui/texture/icons/50_64_8.png"}, "2669": {"iconFile": "res:/ui/texture/icons/50_64_9.png"}, "2934": {"iconFile": "res:/ui/texture/icons/56_64_2.png"}, "10545": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3992_male_bottomOuter_PantsMilM01_Types_PantsMilM01_blackwaxed.png"}, "10547": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3998_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Gray.png"}, "10546": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3997_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackgray.png"}, "10549": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4078_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Camo.png"}, "10548": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/3999_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Blackwax.png"}, "1645": {"iconFile": "res:/ui/texture/icons/31_64_3.png"}, "1644": {"iconFile": "res:/ui/texture/icons/30_64_4.png"}, "1647": {"iconFile": "res:/ui/texture/icons/30_64_5.png"}, "1641": {"iconFile": "res:/ui/texture/icons/30_64_1.png"}, "1640": {"iconFile": "res:/ui/texture/icons/5_64_14.png"}, "1643": {"iconFile": "res:/ui/texture/icons/30_64_3.png"}, "1642": {"iconFile": "res:/ui/texture/icons/30_64_2.png"}, "21288": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/34106_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_orange.png"}, "1649": {"iconFile": "res:/ui/texture/icons/30_64_7.png"}, "1648": {"iconFile": "res:/ui/texture/icons/30_64_8.png"}, "3369": {"iconFile": "res:/ui/texture/corps/47_128_1.png"}, "1359": {"iconFile": "res:/ui/texture/icons/24_64_5.png"}, "1358": {"iconFile": "res:/ui/texture/icons/24_64_4.png"}, "1353": {"iconFile": "res:/ui/texture/icons/21_64_11.png"}, "1352": {"iconFile": "res:/ui/texture/icons/21_64_15.png"}, "1351": {"iconFile": "res:/ui/texture/icons/21_64_7.png"}, "1350": {"iconFile": "res:/ui/texture/icons/21_64_3.png"}, "1357": {"iconFile": "res:/ui/texture/icons/24_64_3.png"}, "1356": {"iconFile": "res:/ui/texture/icons/23_64_15.png"}, "10744": {"iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_RightGray.png"}, "21081": {"iconFile": "res:/UI/Asset/mannequin/makeup_armright/33550_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_WhiteGray.png"}, "1519": {"iconFile": "res:/ui/texture/corps/25_128_4.png"}, "1518": {"iconFile": "res:/ui/texture/corps/29_128_4.png"}, "1515": {"iconFile": "res:/ui/texture/corps/27_128_3.png"}, "1514": {"iconFile": "res:/ui/texture/corps/28_128_2.png"}, "1517": {"iconFile": "res:/ui/texture/corps/32_128_3.png"}, "1516": {"iconFile": "res:/ui/texture/corps/34_128_3.png"}, "1511": {"iconFile": "res:/ui/texture/corps/33_128_3.png"}, "1510": {"iconFile": "res:/ui/texture/corps/33_128_1.png"}, "1513": {"iconFile": "res:/ui/texture/corps/31_128_3.png"}, "1512": {"iconFile": "res:/ui/texture/corps/26_128_1.png"}, "3184": {"iconFile": "res:/ui/texture/icons/63_64_4.png"}, "3185": {"iconFile": "res:/ui/texture/icons/63_64_5.png"}, "3186": {"iconFile": "res:/ui/texture/icons/63_64_6.png"}, "3187": {"iconFile": "res:/ui/texture/icons/63_64_7.png"}, "3180": {"iconFile": "res:/ui/texture/icons/66_128_4.png"}, "3181": {"iconFile": "res:/ui/texture/icons/63_64_1.png"}, "3182": {"iconFile": "res:/ui/texture/icons/63_64_2.png"}, "3183": {"iconFile": "res:/ui/texture/icons/63_64_3.png"}, "3188": {"iconFile": "res:/ui/texture/icons/63_64_8.png"}, "3189": {"iconFile": "res:/ui/texture/icons/63_64_9.png"}, "21226": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34013_male_tattoo_armright_sleeve11__.png"}, "356": {"iconFile": "res:/ui/texture/icons/13_64_14.png"}, "355": {"iconFile": "res:/ui/texture/icons/13_64_10.png"}, "10601": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4106_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_green.png"}, "350": {"iconFile": "res:/ui/texture/icons/13_64_13.png"}, "21227": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34014_male_tattoo_armright_sleeve12__.png"}, "21000": {"iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_knife.png"}, "21001": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_rangeamplifier.png"}, "21002": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_precisionenhancer.png"}, "21003": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_prop_boost.png"}, "21004": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_scanning_activescanner.png"}, "21005": {"iconFile": "res:/UI/Texture/Icons/dust_icon_eq_activescanner.png"}, "21006": {"iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_profiledampener.png"}, "21578": {"iconFile": "res:/ui/texture/icons/1337_64_23.png"}, "21579": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41049_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V0_.png"}, "2323": {"iconFile": "res:/ui/texture/icons/42_64_12.png"}, "2322": {"iconFile": "res:/ui/texture/icons/42_64_11.png"}, "2321": {"iconFile": "res:/ui/texture/icons/42_64_10.png"}, "2320": {"iconFile": "res:/ui/texture/icons/42_64_9.png"}, "2327": {"iconFile": "res:/ui/texture/icons/42_64_16.png"}, "2326": {"iconFile": "res:/ui/texture/icons/42_64_15.png"}, "2325": {"iconFile": "res:/ui/texture/icons/42_64_14.png"}, "2324": {"iconFile": "res:/ui/texture/icons/42_64_13.png"}, "2329": {"iconFile": "res:/ui/texture/icons/43_64_2.png"}, "2328": {"iconFile": "res:/ui/texture/icons/43_64_1.png"}, "21127": {"iconFile": "res:/UI/Asset/mannequin/feet/33724_female_Feet_BootsSLF_01_Types_BootsSLF_01_mouse.png"}, "21126": {"iconFile": "res:/UI/Asset/mannequin/feet/33723_female_Feet_BootsSLF_01_Types_BootsSLF_01_felt.png"}, "21125": {"iconFile": "res:/UI/Asset/mannequin/feet/33722_female_Feet_BootsSLF_01_Types_BootsSLF_01_brown.png"}, "21174": {"iconFile": "res:/UI/Asset/mannequin/outer/33797_male_outer_JacketALM01_Types_JacketALM01_Royal.png"}, "21175": {"iconFile": "res:/UI/Asset/mannequin/outer/33796_male_outer_JacketALM01_Types_JacketALM01_WhiteGold.png"}, "3762": {"iconFile": "res:/ui/texture/icons/89_128_1.png"}, "3763": {"iconFile": "res:/ui/texture/icons/89_128_2.png"}, "3764": {"iconFile": "res:/ui/texture/icons/89_128_3.png"}, "3765": {"iconFile": "res:/ui/texture/icons/89_128_4.png"}, "3766": {"iconFile": "res:/ui/texture/icons/84_64_16.png"}, "21173": {"iconFile": "res:/UI/Asset/mannequin/outer/33798_male_outer_JacketALM01_Types_JacketALM01_RedGold.png"}, "21123": {"iconFile": "res:/UI/Asset/mannequin/feet/33720_female_Feet_BootsSLF_01_Types_BootsSLF_01_black.png"}, "21178": {"iconFile": "res:/UI/Asset/mannequin/outer/33793_male_outer_JacketCLM01_Types_JacketCLM01_Graphite.png"}, "21179": {"iconFile": "res:/UI/Asset/mannequin/outer/33792_male_outer_JacketCLM01_Types_JacketCLM01_GreenCamo.png"}, "21122": {"iconFile": "res:/UI/Asset/mannequin/feet/33719_female_Feet_BootsALF_01_Types_BootsALF_01_red.png"}, "1292": {"iconFile": "res:/ui/texture/icons/14_64_9.png"}, "1293": {"iconFile": "res:/ui/texture/icons/14_64_10.png"}, "21120": {"iconFile": "res:/UI/Asset/mannequin/feet/33717_female_Feet_BootsALF_01_Types_BootsALF_01_cream.png"}, "1290": {"iconFile": "res:/ui/texture/icons/14_64_7.png"}, "1563": {"iconFile": "res:/ui/texture/corps/27_128_2.png"}, "1296": {"iconFile": "res:/ui/texture/icons/14_64_13.png"}, "1297": {"iconFile": "res:/ui/texture/icons/14_64_14.png"}, "21471": {"iconFile": "res:/UI/Asset/mannequin/feet/36507_male_Feet_ShoesEngM01_Types_ShoesEngM01_camo.png"}, "1294": {"iconFile": "res:/ui/texture/icons/14_64_11.png"}, "21470": {"iconFile": "res:/UI/Asset/mannequin/feet/36506_male_Feet_ShoesEngM01_Types_ShoesEngM01_redwhite.png"}, "1295": {"iconFile": "res:/ui/texture/icons/14_64_12.png"}, "21473": {"iconFile": "res:/UI/Asset/mannequin/feet/36509_male_Feet_ShoesEngM01_Types_ShoesEngM01_oregreen.png"}, "10048": {"iconFile": "res:/ui/texture/icons/98_64_6.png"}, "10049": {"iconFile": "res:/ui/texture/icons/98_64_7.png"}, "21352": {"iconFile": "res:/UI/Asset/mannequin/outer/34161_male_outer_JacketMFBR01_Types_JacketMFBR01_SOE.png"}, "3224": {"iconFile": "res:/ui/texture/icons/62_64_15.png"}, "21354": {"iconFile": "res:/UI/Asset/mannequin/outer/34163_male_outer_JacketMFBR01_Types_JacketMFBR01_Interbus.png"}, "21355": {"iconFile": "res:/UI/Asset/mannequin/outer/34164_male_outer_JacketMFBR01_Types_JacketMFBR01_Angel.png"}, "21356": {"iconFile": "res:/UI/Asset/mannequin/outer/34165_male_outer_JacketMFBR01_Types_JacketMFBR01_Sansha.png"}, "21357": {"iconFile": "res:/UI/Asset/mannequin/outer/34166_male_outer_JacketMFBR01_Types_JacketMFBR01_Bloodraiders.png"}, "10040": {"iconFile": "res:/ui/texture/icons/97_64_14.png"}, "10041": {"iconFile": "res:/ui/texture/icons/97_64_15.png"}, "10042": {"iconFile": "res:/ui/texture/icons/97_64_16.png"}, "10043": {"iconFile": "res:/ui/texture/icons/98_64_1.png"}, "10044": {"iconFile": "res:/ui/texture/icons/98_64_2.png"}, "10045": {"iconFile": "res:/ui/texture/icons/98_64_3.png"}, "10046": {"iconFile": "res:/ui/texture/icons/98_64_4.png"}, "10047": {"iconFile": "res:/ui/texture/icons/98_64_5.png"}, "111": {"iconFile": "res:/ui/texture/icons/4_64_9.png"}, "110": {"iconFile": "res:/ui/texture/icons/5_64_1.png"}, "112": {"iconFile": "res:/ui/texture/icons/3_64_4.png"}, "21476": {"iconFile": "res:/UI/Asset/mannequin/feet/36512_female_Feet_ShoesEngF01_Types_ShoesEngF01_RedWhite.png"}, "10602": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4107_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_greenblack.png"}, "10603": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4108_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_greenstripes.png"}, "2079": {"iconFile": "res:/Texture/Landmark/jove.jpg"}, "2078": {"iconFile": "res:/Texture/Landmark/golgothanfields.jpg"}, "10606": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4111_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_matblack.png"}, "10607": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4112_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_red.png"}, "10604": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4109_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_khaki.png"}, "10605": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4110_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_marine.png"}, "2073": {"iconFile": "res:/Texture/Landmark/cityofgod.jpg"}, "2072": {"iconFile": "res:/Texture/Landmark/caldari.jpg"}, "2071": {"iconFile": "res:/Texture/Landmark/amarr.jpg"}, "2070": {"iconFile": "res:/Texture/Landmark/A33colonialruins.jpg"}, "2077": {"iconFile": "res:/Texture/Landmark/ginnungagap.jpg"}, "2076": {"iconFile": "res:/Texture/Landmark/galente.jpg"}, "2075": {"iconFile": "res:/Texture/Landmark/emperor.jpg"}, "2074": {"iconFile": "res:/Texture/Landmark/Curse.jpg"}, "10134": {"iconFile": "res:/ui/texture/icons/102_128_2.png"}, "10135": {"iconFile": "res:/ui/texture/icons/102_128_3.png"}, "10136": {"iconFile": "res:/ui/texture/icons/102_128_4.png"}, "10137": {"iconFile": "res:/ui/texture/icons/103_128_1.png"}, "10132": {"iconFile": "res:/ui/texture/icons/96_64_1.png"}, "10133": {"iconFile": "res:/ui/texture/icons/102_128_1.png"}, "10138": {"iconFile": "res:/ui/texture/icons/103_128_2.png"}, "10139": {"iconFile": "res:/ui/texture/icons/103_128_3.png"}, "21598": {"iconFile": "res:/ui/texture/icons/127_64_4.png"}, "21599": {"iconFile": "res:/ui/texture/icons/127_64_5.png"}, "21596": {"iconFile": "res:/ui/texture/icons/127_64_1.png"}, "21597": {"iconFile": "res:/ui/texture/icons/127_64_3.png"}, "21594": {"iconFile": "res:/ui/texture/icons/127_64_9.png"}, "21595": {"iconFile": "res:/ui/texture/icons/127_64_2.png"}, "21592": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41045_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V0_.png"}, "20997": {"iconFile": "res:/UI/Texture/Corps/imperial_guard.png"}, "21590": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41044_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V3_.png"}, "21591": {"iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41048_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V2_.png"}, "20996": {"iconFile": "res:/UI/Texture/Corps/default.png"}, "2671": {"iconFile": "res:/ui/texture/icons/49_64_1.png"}, "2670": {"iconFile": "res:/ui/texture/icons/50_64_10.png"}, "2673": {"iconFile": "res:/ui/texture/icons/49_64_3.png"}, "2672": {"iconFile": "res:/ui/texture/icons/49_64_2.png"}, "2674": {"iconFile": "res:/ui/texture/icons/49_64_4.png"}, "2677": {"iconFile": "res:/ui/texture/icons/49_64_7.png"}, "2679": {"iconFile": "res:/ui/texture/icons/49_64_9.png"}, "2678": {"iconFile": "res:/ui/texture/icons/49_64_8.png"}, "10556": {"iconFile": "res:/UI/Asset/mannequin/feet/4008_male_Feet_BootsMilM01_Types_BootsMilM01_black.png"}, "10557": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftDark.png"}, "10554": {"iconFile": "res:/UI/Asset/mannequin/feet/4003_female_Feet_BootsMilF02_Types_BootsMilF02_black.png"}, "10555": {"iconFile": "res:/UI/Asset/mannequin/feet/4004_female_Feet_BootsMilF03_Types_BootsMilF03_black.png"}, "10552": {"iconFile": "res:/UI/Asset/mannequin/feet/4001_male_Feet_BootsMilM03_Types_BootsMilM03_black.png"}, "10553": {"iconFile": "res:/UI/Asset/mannequin/feet/4002_female_Feet_BootsMilF01_Types_BootsMilF01_black.png"}, "10550": {"iconFile": "res:/UI/Asset/mannequin/bottomouter/4085_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Black.png"}, "10551": {"iconFile": "res:/UI/Asset/mannequin/feet/3966_male_Feet_BootsMilM02_Types_BootsMilM02_black.png"}, "3223": {"iconFile": "res:/ui/texture/icons/62_64_14.png"}, "10558": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftGold.png"}, "10559": {"iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftGray.png"}, "1630": {"iconFile": "res:/ui/texture/icons/28_128_3.png"}, "1631": {"iconFile": "res:/ui/texture/icons/28_128_4.png"}, "1632": {"iconFile": "res:/ui/texture/icons/29_128_1.png"}, "1633": {"iconFile": "res:/ui/texture/icons/29_128_2.png"}, "1634": {"iconFile": "res:/ui/texture/icons/29_128_3.png"}, "1635": {"iconFile": "res:/ui/texture/icons/29_128_4.png"}, "3212": {"iconFile": "res:/ui/texture/icons/62_64_3.png"}, "3213": {"iconFile": "res:/ui/texture/icons/62_64_4.png"}, "1639": {"iconFile": "res:/ui/texture/icons/5_64_7.png"}, "3218": {"iconFile": "res:/ui/texture/icons/62_64_9.png"}, "3219": {"iconFile": "res:/ui/texture/icons/62_64_10.png"}, "3222": {"iconFile": "res:/ui/texture/icons/62_64_13.png"}, "21371": {"iconFile": "res:/UI/Asset/mannequin/outer/34181_female_Outer_JacketFBR01_Types_JacketFBR01_serpentis.png"}, "3179": {"iconFile": "res:/ui/texture/icons/66_128_2.png"}, "3178": {"iconFile": "res:/ui/texture/icons/66_128_1.png"}, "3173": {"iconFile": "res:/ui/texture/icons/67_128_2.png"}, "3172": {"iconFile": "res:/ui/texture/icons/67_128_1.png"}, "3175": {"iconFile": "res:/ui/texture/icons/65_128_1.png"}, "3174": {"iconFile": "res:/ui/texture/icons/67_128_4.png"}, "3177": {"iconFile": "res:/ui/texture/icons/65_128_4.png"}, "3176": {"iconFile": "res:/ui/texture/icons/65_128_2.png"}, "10233": {"iconFile": "res:/UI/Asset/mannequin/hair_4096_1005.png"}, "1188": {"iconFile": "res:/ui/texture/icons/10_64_12.png"}, "1482": {"iconFile": "res:/ui/texture/corps/19_128_4.png"}, "1186": {"iconFile": "res:/ui/texture/icons/10_64_10.png"}, "1187": {"iconFile": "res:/ui/texture/icons/10_64_11.png"}, "1184": {"iconFile": "res:/ui/texture/icons/10_64_8.png"}, "1185": {"iconFile": "res:/ui/texture/icons/10_64_9.png"}, "1182": {"iconFile": "res:/ui/texture/icons/10_64_6.png"}, "1481": {"iconFile": "res:/ui/texture/corps/14_128_2.png"}, "1180": {"iconFile": "res:/ui/texture/icons/10_64_1.png"}, "1181": {"iconFile": "res:/ui/texture/icons/10_64_2.png"}, "10237": {"iconFile": "res:/UI/Asset/mannequin/topmiddle/4066_female_TopMiddle_ShirtQF01_Types_shirtqf01.png"}, "10236": {"iconFile": "res:/UI/Asset/mannequin/outer/4098_male_outer_JacketMilM02_Types_JacketMilM02_blackgray.png"}, "1164": {"iconFile": "res:/ui/texture/icons/27_64_10.png"}, "5029": {"iconFile": "res:/Texture/Landmark/myridianstrip.jpg"}, "10235": {"iconFile": "res:/UI/Asset/mannequin/outer/4097_male_outer_JacketMilM01_Types_JacketMilM01_blackyellow.png"}, "1162": {"iconFile": "res:/ui/texture/icons/27_64_12.png"}, "1163": {"iconFile": "res:/ui/texture/icons/27_64_11.png"}, "1484": {"iconFile": "res:/ui/texture/corps/18_128_3.png"}, "1168": {"iconFile": "res:/ui/texture/icons/27_64_16.png"}, "1169": {"iconFile": "res:/ui/texture/icons/27_64_15.png"}, "1489": {"iconFile": "res:/ui/texture/corps/13_128_2.png"}, "21225": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34012_male_tattoo_armright_sleeve10__.png"}, "3197": {"iconFile": "res:/ui/texture/icons/68_64_13.png"}, "1488": {"iconFile": "res:/ui/texture/corps/16_128_2.png"}, "2581": {"iconFile": "res:/ui/texture/icons/47_64_15.png"}, "3196": {"iconFile": "res:/ui/texture/icons/68_64_12.png"}, "2580": {"iconFile": "res:/ui/texture/icons/47_64_14.png"}, "3195": {"iconFile": "res:/ui/texture/icons/68_64_11.png"}, "1568": {"iconFile": "res:/ui/texture/corps/11_128_2.png"}, "1569": {"iconFile": "res:/ui/texture/corps/11_128_3.png"}, "1298": {"iconFile": "res:/ui/texture/icons/14_64_15.png"}, "1299": {"iconFile": "res:/ui/texture/icons/14_64_16.png"}, "21229": {"iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34016_male_tattoo_armright_sleeve15__.png"}, "1560": {"iconFile": "res:/ui/texture/corps/26_128_2.png"}, "1561": {"iconFile": "res:/ui/texture/corps/27_128_1.png"}, "1562": {"iconFile": "res:/ui/texture/corps/28_128_1.png"}, "1291": {"iconFile": "res:/ui/texture/icons/14_64_8.png"}, "1564": {"iconFile": "res:/ui/texture/corps/3_128_2.png"}, "1565": {"iconFile": "res:/ui/texture/corps/40_128_3.png"}, "1566": {"iconFile": "res:/ui/texture/corps/39_128_3.png"}, "1567": {"iconFile": "res:/ui/texture/corps/11_128_4.png"}, "21432": {"iconFile": "res:/UI/Texture/WindowIcons/Reprocess.png"}, "3191": {"iconFile": "res:/ui/texture/icons/63_64_11.png"}, "3190": {"iconFile": "res:/ui/texture/icons/63_64_10.png"}, "5027": {"iconFile": "res:/Texture/Landmark/golgothanfields.jpg"}, "5026": {"iconFile": "res:/Texture/Landmark/ginnungagap.jpg"}, "1366": {"iconFile": "res:/ui/texture/icons/24_64_12.png"}, "1367": {"iconFile": "res:/ui/texture/icons/24_64_13.png"}, "1364": {"iconFile": "res:/ui/texture/icons/24_64_10.png"}, "1365": {"iconFile": "res:/ui/texture/icons/24_64_11.png"}, "1362": {"iconFile": "res:/ui/texture/icons/24_64_8.png"}, "1363": {"iconFile": "res:/ui/texture/icons/24_64_9.png"}, "1360": {"iconFile": "res:/ui/texture/icons/24_64_6.png"}, "1361": {"iconFile": "res:/ui/texture/icons/24_64_7.png"}, "3198": {"iconFile": "res:/ui/texture/icons/68_64_14.png"}, "1368": {"iconFile": "res:/ui/texture/icons/24_64_14.png"}, "1369": {"iconFile": "res:/ui/texture/icons/24_64_15.png"}} \ No newline at end of file diff --git a/scripts/sdeReadIcons.py b/scripts/sdeReadIcons.py index 2284bf7e9..c1b9910c4 100644 --- a/scripts/sdeReadIcons.py +++ b/scripts/sdeReadIcons.py @@ -9,7 +9,7 @@ import json iconDict = {} -stream = open(r"C:\path\to\sde\fsd\iconIDs.yaml", "r") +stream = open(r"C:\Users\Ryan\Sync\Git\blitzmann\Pyfa\scripts\iconIDs.yaml", "r") docs = yaml.load_all(stream) for doc in docs: diff --git a/service/__init__.py b/service/__init__.py index b19c6db17..91ed07d82 100644 --- a/service/__init__.py +++ b/service/__init__.py @@ -5,7 +5,6 @@ from service.character import Character from service.damagePattern import DamagePattern from service.targetResists import TargetResists from service.settings import SettingsProvider -from service.fleet import Fleet from service.update import Update from service.price import Price from service.network import Network diff --git a/service/character.py b/service/character.py index 922b926c1..8e36a2e02 100644 --- a/service/character.py +++ b/service/character.py @@ -34,6 +34,8 @@ import service import config import logging +from eos.saveddata.character import Character as es_Character + logger = logging.getLogger(__name__) class CharacterImportThread(threading.Thread): @@ -45,6 +47,12 @@ class CharacterImportThread(threading.Thread): def run(self): paths = self.paths sCharacter = Character.getInstance() + all5_character = es_Character("All 5", 5) + all_skill_ids = [] + for skill in all5_character.skills: + # Parse out the skill item IDs to make searching it easier later on + all_skill_ids.append(skill.itemID) + for path in paths: try: # we try to parse api XML data first @@ -59,19 +67,28 @@ class CharacterImportThread(threading.Thread): charFile = open(path, mode='r').read() doc = minidom.parseString(charFile) if doc.documentElement.tagName not in ("SerializableCCPCharacter", "SerializableUriCharacter"): + logger.error("Incorrect EVEMon XML sheet") raise RuntimeError("Incorrect EVEMon XML sheet") name = doc.getElementsByTagName("name")[0].firstChild.nodeValue skill_els = doc.getElementsByTagName("skill") skills = [] for skill in skill_els: - skills.append({ - "typeID": int(skill.getAttribute("typeID")), - "level": int(skill.getAttribute("level")), - }) + if int(skill.getAttribute("typeID")) in all_skill_ids and (0 <= int(skill.getAttribute("level")) <= 5): + skills.append({ + "typeID": int(skill.getAttribute("typeID")), + "level": int(skill.getAttribute("level")), + }) + else: + logger.error("Attempted to import unknown skill %s (ID: %s) (Level: %s)", + skill.getAttribute("name"), + skill.getAttribute("typeID"), + skill.getAttribute("level"), + ) char = sCharacter.new(name+" (EVEMon)") sCharacter.apiUpdateCharSheet(char.ID, skills) except Exception, e: - print e.message + logger.error("Exception on character import:") + logger.error(e) continue wx.CallAfter(self.callback) @@ -262,8 +279,11 @@ class Character(object): return char def rename(self, char, newName): - char.name = newName - eos.db.commit() + if char.name in ("All 0", "All 5"): + logger.info("Cannot rename built in characters.") + else: + char.name = newName + eos.db.commit() def copy(self, char): newChar = copy.deepcopy(char) diff --git a/service/fit.py b/service/fit.py index b2bb691ff..7382df1fd 100644 --- a/service/fit.py +++ b/service/fit.py @@ -34,7 +34,6 @@ from eos.types import State, Slot from service.market import Market from service.damagePattern import DamagePattern from service.character import Character -from service.fleet import Fleet from service.settings import SettingsProvider from service.port import Port @@ -142,19 +141,10 @@ class Fit(object): def countAllFits(self): return eos.db.countAllFits() - def countFitsWithShip(self, shipID): - count = eos.db.countFitsWithShip(shipID) + def countFitsWithShip(self, stuff): + count = eos.db.countFitsWithShip(stuff) return count - def groupHasFits(self, groupID): - sMkt = Market.getInstance() - grp = sMkt.getGroup(groupID) - items = sMkt.getItemsByGroup(grp) - for item in items: - if self.countFitsWithShip(item.ID) > 0: - return True - return False - def getModule(self, fitID, pos): fit = eos.db.getFit(fitID) return fit.modules[pos] @@ -186,8 +176,6 @@ class Fit(object): def deleteFit(self, fitID): fit = eos.db.getFit(fitID) - sFleet = Fleet.getInstance() - sFleet.removeAssociatedFleetData(fit) eos.db.remove(fit) @@ -238,7 +226,8 @@ class Fit(object): self.recalc(fit, withBoosters=True) def getFit(self, fitID, projected=False, basic=False): - ''' Gets fit from database, and populates fleet data. + ''' Gets fit from database + Projected is a recursion flag that is set to reduce recursions into projected fits Basic is a flag to simply return the fit without any other processing ''' @@ -252,14 +241,6 @@ class Fit(object): inited = getattr(fit, "inited", None) if inited is None or inited is False: - sFleet = Fleet.getInstance() - f = sFleet.getLinearFleet(fit) - if f is None: - sFleet.removeAssociatedFleetData(fit) - fit.fleet = None - else: - fit.fleet = f - if not projected: for fitP in fit.projectedFits: self.getFit(fitP.ID, projected=True) diff --git a/service/fleet.py b/service/fleet.py deleted file mode 100644 index cfad7f04b..000000000 --- a/service/fleet.py +++ /dev/null @@ -1,215 +0,0 @@ -#=============================================================================== -# Copyright (C) 2010 Diego Duclos -# -# This file is part of pyfa. -# -# pyfa is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# pyfa is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with pyfa. If not, see . -#=============================================================================== - -import eos.db -from eos.types import Fleet as Fleet_, Wing, Squad -import copy - -class Fleet(object): - instance = None - @classmethod - def getInstance(cls): - if cls.instance is None: - cls.instance = Fleet() - - return cls.instance - - def __init__(self): - pass - - def getFleetList(self): - fleetList = [] - fleets = eos.db.getFleetList() - for fleet in fleets: - fleetList.append((fleet.ID, fleet.name, fleet.count())) - - return fleetList - - def getFleetByID(self, ID): - f = eos.db.getFleet(ID) - return f - - def addFleet(self): - f = Fleet_() - eos.db.save(f) - return f - - def renameFleet(self, fleet, newName): - fleet.name = newName - eos.db.commit() - - def copyFleet(self, fleet): - newFleet = copy.deepcopy(fleet) - eos.db.save(newFleet) - return newFleet - - def copyFleetByID(self, ID): - fleet = self.getFleetByID(ID) - return self.copyFleet(fleet) - - def deleteFleet(self, fleet): - eos.db.remove(fleet) - - def deleteFleetByID(self, ID): - fleet = self.getFleetByID(ID) - self.deleteFleet(fleet) - - def makeLinearFleet(self, fit): - f = Fleet_() - w = Wing() - f.wings.append(w) - s = Squad() - w.squads.append(s) - s.members.append(fit) - fit.fleet = f - eos.db.save(f) - - def setLinearFleetCom(self, boostee, booster): - #if boostee == booster: - # return - if self.getLinearFleet(boostee) is None: - self.removeAssociatedFleetData(boostee) - self.makeLinearFleet(boostee) - squadIDs = set(eos.db.getSquadsIDsWithFitID(boostee.ID)) - squad = eos.db.getSquad(squadIDs.pop()) - if squad.wing.gang.leader is not None and booster is None: - try: - squad.wing.gang.leader.boostsFits.remove(boostee.ID) - except KeyError: - pass - squad.wing.gang.leader = booster - if self.anyBoosters(squad) is False: - self.removeAssociatedFleetData(boostee) - from service.fit import Fit - sFit = Fit.getInstance() - sFit.recalc(boostee, withBoosters=True) - - def setLinearWingCom(self, boostee, booster): - #if boostee == booster: - # return - if self.getLinearFleet(boostee) is None: - self.removeAssociatedFleetData(boostee) - self.makeLinearFleet(boostee) - squadIDs = set(eos.db.getSquadsIDsWithFitID(boostee.ID)) - squad = eos.db.getSquad(squadIDs.pop()) - if squad.wing.leader is not None and booster is None: - try: - squad.wing.leader.boostsFits.remove(boostee.ID) - except KeyError: - pass - squad.wing.leader = booster - if self.anyBoosters(squad) is False: - self.removeAssociatedFleetData(boostee) - from service.fit import Fit - sFit = Fit.getInstance() - sFit.recalc(boostee, withBoosters=True) - - def setLinearSquadCom(self, boostee, booster): - #if boostee == booster: - # return - if self.getLinearFleet(boostee) is None: - self.removeAssociatedFleetData(boostee) - self.makeLinearFleet(boostee) - squadIDs = set(eos.db.getSquadsIDsWithFitID(boostee.ID)) - squad = eos.db.getSquad(squadIDs.pop()) - if squad.leader is not None and booster is None: - try: - squad.leader.boostsFits.remove(boostee.ID) - except KeyError: - pass - squad.leader = booster - if self.anyBoosters(squad) is False: - self.removeAssociatedFleetData(boostee) - from service.fit import Fit - sFit = Fit.getInstance() - sFit.recalc(boostee, withBoosters=True) - - - def getLinearFleet(self, fit): - sqIDs = eos.db.getSquadsIDsWithFitID(fit.ID) - if len(sqIDs) != 1: - return None - s = eos.db.getSquad(sqIDs[0]) - if len(s.members) != 1: - return None - w = s.wing - if len(w.squads) != 1: - return None - f = w.gang - if len(f.wings) != 1: - return None - return f - - def removeAssociatedFleetData(self, fit): - squadIDs = set(eos.db.getSquadsIDsWithFitID(fit.ID)) - if len(squadIDs) == 0: - return - squads = list(eos.db.getSquad(sqID) for sqID in squadIDs) - wingIDs = set(squad.wing.ID for squad in squads) - fleetIDs = set(squad.wing.gang.ID for squad in squads) - for fleetID in fleetIDs: - fleet = eos.db.getFleet(fleetID) - for wing in fleet.wings: - wingIDs.add(wing.ID) - for wingID in wingIDs: - wing = eos.db.getWing(wingID) - for squad in wing.squads: - squadIDs.add(squad.ID) - for squadID in squadIDs: - squad = eos.db.getSquad(squadID) - if squad.leader is not None: - try: - squad.leader.boostsFits.remove(fit.ID) - except KeyError: - pass - eos.db.remove(squad) - for wingID in wingIDs: - wing = eos.db.getWing(wingID) - if wing.leader is not None: - try: - wing.leader.boostsFits.remove(fit.ID) - except KeyError: - pass - eos.db.remove(wing) - for fleetID in fleetIDs: - fleet = eos.db.getFleet(fleetID) - if fleet.leader is not None: - try: - fleet.leader.boostsFits.remove(fit.ID) - except KeyError: - pass - eos.db.remove(fleet) - fit.fleet = None - return - - def anyBoosters(self, squad): - wing = squad.wing - fleet = wing.gang - if squad.leader is None and wing.leader is None and fleet.leader is None: - return False - return True - - def loadLinearFleet(self, fit): - if self.getLinearFleet(fit) is None: - return None - squadID = eos.db.getSquadsIDsWithFitID(fit.ID)[0] - s = eos.db.getSquad(squadID) - w = s.wing - f = w.gang - return (f.leader, w.leader, s.leader) diff --git a/service/market.py b/service/market.py index 7d1cdea19..c851957e3 100644 --- a/service/market.py +++ b/service/market.py @@ -219,6 +219,8 @@ class Market(): "Victorieux Luxury Yacht": self.les_grp, # Worlds Collide prize \o/ chinese getting owned "Imp": self.les_grp, # AT13 prize "Fiend": self.les_grp, # AT13 prize + "Caedes": self.les_grp, # AT14 prize + "Rabisu": self.les_grp, # AT14 prize } self.ITEMS_FORCEGROUP_R = self.__makeRevDict(self.ITEMS_FORCEGROUP) @@ -543,6 +545,7 @@ class Market(): def getGroupsByCategory(self, cat): """Get groups from given category""" groups = set(filter(lambda grp: self.getPublicityByGroup(grp), cat.groups)) + return groups def getMarketGroupChildren(self, mg): diff --git a/service/port.py b/service/port.py index 66e105c06..f0b24306b 100644 --- a/service/port.py +++ b/service/port.py @@ -406,7 +406,12 @@ class Port(object): cargoMap[modName] = 0 cargoMap[modName] += extraAmount elif item.category.name == "Implant": - fit.implants.append(Implant(item)) + if "implantness" in item.attributes: + fit.implants.append(Implant(item)) + elif "boosterness" in item.attributes: + fit.boosters.append(Booster(item)) + else: + logger.error("Failed to import implant: %s", line) # elif item.category.name == "Subsystem": # try: # subsystem = Module(item) diff --git a/service/prefetch.py b/service/prefetch.py index b16f52d40..6c45ffc63 100644 --- a/service/prefetch.py +++ b/service/prefetch.py @@ -23,6 +23,11 @@ import os import eos.types import eos.db.migration as migration from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues +from eos.db.saveddata.databaseRepair import DatabaseCleanup +import logging + +logger = logging.getLogger(__name__) + class PrefetchThread(threading.Thread): def run(self): @@ -55,6 +60,14 @@ if os.path.isfile(config.saveDB): # Import default database values # Import values that must exist otherwise Pyfa breaks DefaultDatabaseValues.importRequiredDefaults() + + logging.debug("Starting database validation.") + database_cleanup_instance = DatabaseCleanup() + database_cleanup_instance.OrphanedCharacterSkills(eos.db.saveddata_engine) + database_cleanup_instance.OrphanedFitCharacterIDs(eos.db.saveddata_engine) + database_cleanup_instance.OrphanedFitDamagePatterns(eos.db.saveddata_engine) + logging.debug("Completed database validation.") + else: # If database does not exist, do not worry about migration. Simply # create and set version @@ -67,4 +80,3 @@ else: DefaultDatabaseValues.importDamageProfileDefaults() # Import default values for target resist profiles DefaultDatabaseValues.importResistProfileDefaults() -