From bc592eaabeed75feea951e91824e5137cd8f14cf Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Sun, 14 Jul 2013 15:25:11 +0400 Subject: [PATCH] Fix several miscalculations --- eos/effects/sensorboosttargetedhostile.py | 9 ++ eos/effects/shiparmorrepairing1gbc2.py | 2 +- ...llofftrackingspeedmultiplytargethostile.py | 14 ++ eos/utils/scripts/jsonToSql.py | 122 +++++++++--------- 4 files changed, 85 insertions(+), 62 deletions(-) create mode 100644 eos/effects/sensorboosttargetedhostile.py create mode 100644 eos/effects/turretweaponrangefallofftrackingspeedmultiplytargethostile.py diff --git a/eos/effects/sensorboosttargetedhostile.py b/eos/effects/sensorboosttargetedhostile.py new file mode 100644 index 000000000..e02221d9b --- /dev/null +++ b/eos/effects/sensorboosttargetedhostile.py @@ -0,0 +1,9 @@ +# Used by: +# Drones named like: SD (3 of 3) +type = "projected", "active" +def handler(fit, container, context): + if "projected" in context: + fit.ship.multiplyItemAttr("maxTargetRange", container.getModifiedItemAttr("maxTargetRangeMultiplier"), + stackingPenalties = True, penaltyGroup="postMul") + fit.ship.multiplyItemAttr("scanResolution", container.getModifiedItemAttr("scanResolutionMultiplier"), + stackingPenalties = True, penaltyGroup="postMul") diff --git a/eos/effects/shiparmorrepairing1gbc2.py b/eos/effects/shiparmorrepairing1gbc2.py index cc9fba5f4..ddb0f28a0 100755 --- a/eos/effects/shiparmorrepairing1gbc2.py +++ b/eos/effects/shiparmorrepairing1gbc2.py @@ -4,5 +4,5 @@ type = "passive" def handler(fit, ship, context): level = fit.character.getSkill("Gallente Battlecruiser").level - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Armor Repair Unit", + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"), "armorDamageAmount", ship.getModifiedItemAttr("shipBonusGBC2") * level) diff --git a/eos/effects/turretweaponrangefallofftrackingspeedmultiplytargethostile.py b/eos/effects/turretweaponrangefallofftrackingspeedmultiplytargethostile.py new file mode 100644 index 000000000..39958d82f --- /dev/null +++ b/eos/effects/turretweaponrangefallofftrackingspeedmultiplytargethostile.py @@ -0,0 +1,14 @@ +# Used by: +# Drones named like: TD (3 of 3) +type = "projected", "active" +def handler(fit, container, context): + if "projected" in context: + fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Gunnery"), + "trackingSpeed", container.getModifiedItemAttr("trackingSpeedMultiplier"), + stackingPenalties = True, penaltyGroup="postMul") + fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Gunnery"), + "maxRange", container.getModifiedItemAttr("maxRangeMultiplier"), + stackingPenalties = True, penaltyGroup="postMul") + fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Gunnery"), + "falloff", container.getModifiedItemAttr("fallofMultiplier"), + stackingPenalties = True, penaltyGroup="postMul") diff --git a/eos/utils/scripts/jsonToSql.py b/eos/utils/scripts/jsonToSql.py index 1be95f271..a6b099edd 100755 --- a/eos/utils/scripts/jsonToSql.py +++ b/eos/utils/scripts/jsonToSql.py @@ -30,77 +30,77 @@ import json import argparse if __name__ == "__main__": - parser = argparse.ArgumentParser(description="This scripts dumps effects from an sqlite cache dump to mongo") - parser.add_argument("-d", "--db", required=True, type=str, help="The sqlalchemy connectionstring, example: sqlite:///c:/tq.db") - parser.add_argument("-j", "--json", required=True, type=str, help="The path to the json dum") - args = parser.parse_args() + parser = argparse.ArgumentParser(description="This scripts dumps effects from an sqlite cache dump to mongo") + parser.add_argument("-d", "--db", required=True, type=str, help="The sqlalchemy connectionstring, example: sqlite:///c:/tq.db") + parser.add_argument("-j", "--json", required=True, type=str, help="The path to the json dum") + args = parser.parse_args() - # Import eos.config first and change it - import eos.config - eos.config.gamedata_connectionstring = args.db - eos.config.debug = False + # Import eos.config first and change it + import eos.config + eos.config.gamedata_connectionstring = args.db + eos.config.debug = False - # Now thats done, we can import the eos modules using the config - import eos.db - import eos.gamedata + # Now thats done, we can import the eos modules using the config + import eos.db + import eos.gamedata - # Create the database tables - eos.db.gamedata_meta.create_all() + # Create the database tables + eos.db.gamedata_meta.create_all() - # Config dict - tables = {"dgmattribs": eos.gamedata.AttributeInfo, - "dgmeffects": eos.gamedata.EffectInfo, - "dgmtypeattribs": eos.gamedata.Attribute, - "dgmtypeeffects": eos.gamedata.Effect, - "dgmunits": eos.gamedata.Unit, - "icons": eos.gamedata.Icon, - "invcategories": eos.gamedata.Category, - "invgroups": eos.gamedata.Group, - "invmetagroups": eos.gamedata.MetaGroup, - "invmetatypes": eos.gamedata.MetaType, - "invtypes": eos.gamedata.Item, - "marketProxy_GetMarketGroups": eos.gamedata.MarketGroup} + # Config dict + tables = {"dgmattribs": eos.gamedata.AttributeInfo, + "dgmeffects": eos.gamedata.EffectInfo, + "dgmtypeattribs": eos.gamedata.Attribute, + "dgmtypeeffects": eos.gamedata.Effect, + "dgmunits": eos.gamedata.Unit, + "icons": eos.gamedata.Icon, + "invcategories": eos.gamedata.Category, + "invgroups": eos.gamedata.Group, + "invmetagroups": eos.gamedata.MetaGroup, + "invmetatypes": eos.gamedata.MetaType, + "invtypes": eos.gamedata.Item, + "marketProxy_GetMarketGroups": eos.gamedata.MarketGroup} - fieldMapping = {"icons": {"id": "iconID"}} - data = {} + fieldMapping = {"icons": {"id": "iconID"}} + data = {} - # Dump all data to memory so we can easely cross check ignored rows - for jsonName, cls in tables.iteritems(): - f = open(os.path.join(args.json, "{}.json".format(jsonName))) - data[jsonName] = json.load(f, encoding='cp1252') + # Dump all data to memory so we can easely cross check ignored rows + for jsonName, cls in tables.iteritems(): + f = open(os.path.join(args.json, "{}.json".format(jsonName))) + data[jsonName] = json.load(f, encoding='cp1252') - # Do some preprocessing to make our job easier - invTypes = set() - for row in data["invtypes"]: - if row["published"]: - invTypes.add(row["typeID"]) + # Do some preprocessing to make our job easier + invTypes = set() + for row in data["invtypes"]: + if row["published"]: + invTypes.add(row["typeID"]) - # ignore checker - def isIgnored(file, row): - if file == "invtypes" and not row["published"]: - return True - elif file == "dgmtypeeffects" and not row["typeID"] in invTypes: - return True - elif file == "dgmtypeattribs" and not row["typeID"] in invTypes: - return True - elif file == "invmetatypes" and not row["typeID"] in invTypes: - return True + # ignore checker + def isIgnored(file, row): + if file == "invtypes" and not row["published"]: + return True + elif file == "dgmtypeeffects" and not row["typeID"] in invTypes: + return True + elif file == "dgmtypeattribs" and not row["typeID"] in invTypes: + return True + elif file == "invmetatypes" and not row["typeID"] in invTypes: + return True - return False + return False - # Loop through each json file and write it away, checking ignored rows - for jsonName, table in data.iteritems(): - fieldMap = fieldMapping.get(jsonName, {}) - print "processing {}".format(jsonName) - for row in table: - # We don't care about some kind of rows, filter it out if so - if not isIgnored(jsonName, row): - instance = tables[jsonName]() - for k, v in row.iteritems(): - setattr(instance, fieldMap.get(k, k), v) + # Loop through each json file and write it away, checking ignored rows + for jsonName, table in data.iteritems(): + fieldMap = fieldMapping.get(jsonName, {}) + print "processing {}".format(jsonName) + for row in table: + # We don't care about some kind of rows, filter it out if so + if not isIgnored(jsonName, row): + instance = tables[jsonName]() + for k, v in row.iteritems(): + setattr(instance, fieldMap.get(k, k), v) - eos.db.gamedata_session.add(instance) + eos.db.gamedata_session.add(instance) - eos.db.gamedata_session.commit() + eos.db.gamedata_session.commit() - print("done") \ No newline at end of file + print("done")