diff --git a/eos/db/migrations/upgrade11.py b/eos/db/migrations/upgrade11.py new file mode 100644 index 000000000..7265e064a --- /dev/null +++ b/eos/db/migrations/upgrade11.py @@ -0,0 +1,116 @@ +""" +Migration 11 + +- Converts modules based on December Release 2015 Tiericide + Some modules have been unpublished (and unpublished module attributes are removed + from database), which causes pyfa to crash. We therefore replace these + modules with their new replacements +""" + + +CONVERSIONS = { + 16467: ( # Medium Gremlin Compact Energy Neutralizer + 16471, # Medium Unstable Power Fluctuator I + ), + 22947: ( # 'Beatnik' Small Remote Armor Repairer + 23414, # 'Brotherhood' Small Remote Armor Repairer + ), + 8295: ( # Type-D Restrained Shield Flux Coil + 8293, # Beta Reactor Control: Shield Flux I + ), + 16499: ( # Heavy Knave Scoped Energy Nosferatu + 16501, # E500 Prototype Energy Vampire + ), + 16477: ( # Heavy Infectious Scoped Energy Neutralizer + 16473, # Heavy Rudimentary Energy Destabilizer I + ), + 16475: ( # Heavy Gremlin Compact Energy Neutralizer + 16479, # Heavy Unstable Power Fluctuator I + ), + 16447: ( # Medium Solace Scoped Remote Armor Repairer + 16445, # Medium 'Arup' Remote Armor Repairer + ), + 508: ( # 'Basic' Shield Flux Coil + 8325, # Alpha Reactor Shield Flux + 8329, # Marked Generator Refitting: Shield Flux + 8323, # Partial Power Plant Manager: Shield Flux + 8327, # Type-E Power Core Modification: Shield Flux + ), + 1419: ( # 'Basic' Shield Power Relay + 8341, # Alpha Reactor Shield Power Relay + 8345, # Marked Generator Refitting: Shield Power Relay + 8339, # Partial Power Plant Manager: Shield Power Relay + 8343, # Type-E Power Core Modification: Shield Power Relay + ), + 16439: ( # Small Solace Scoped Remote Armor Repairer + 16437, # Small 'Arup' Remote Armor Repairer + ), + 16505: ( # Medium Ghoul Compact Energy Nosferatu + 16511, # Medium Diminishing Power System Drain I + ), + 8297: ( # Mark I Compact Shield Flux Coil + 8291, # Local Power Plant Manager: Reaction Shield Flux I + ), + 16455: ( # Large Solace Scoped Remote Armor Repairer + 16453, # Large 'Arup' Remote Armor Repairer + ), + 6485: ( # M51 Benefactor Compact Shield Recharger + 6491, # Passive Barrier Compensator I + 6489, # 'Benefactor' Ward Reconstructor + 6487, # Supplemental Screen Generator I + ), + 5137: ( # Small Knave Scoped Energy Nosferatu + 5135, # E5 Prototype Energy Vampire + ), + 8579: ( # Medium Murky Compact Remote Shield Booster + 8581, # Medium 'Atonement' Remote Shield Booster + ), + 8531: ( # Small Murky Compact Remote Shield Booster + 8533, # Small 'Atonement' Remote Shield Booster + ), + 16497: ( # Heavy Ghoul Compact Energy Nosferatu + 16503, # Heavy Diminishing Power System Drain I + ), + 4477: ( # Small Gremlin Compact Energy Neutralizer + 4475, # Small Unstable Power Fluctuator I + ), + 8337: ( # Mark I Compact Shield Power Relay + 8331, # Local Power Plant Manager: Reaction Shield Power Relay I + ), + 23416: ( # 'Peace' Large Remote Armor Repairer + 22951, # 'Pacifier' Large Remote Armor Repairer + ), + 5141: ( # Small Ghoul Compact Energy Nosferatu + 5139, # Small Diminishing Power System Drain I + ), + 4471: ( # Small Infectious Scoped Energy Neutralizer + 4473, # Small Rudimentary Energy Destabilizer I + ), + 16469: ( # Medium Infectious Scoped Energy Neutralizer + 16465, # Medium Rudimentary Energy Destabilizer I + ), + 8335: ( # Type-D Restrained Shield Power Relay + 8333, # Beta Reactor Control: Shield Power Relay I + ), + 405: ( # 'Micro' Remote Shield Booster + 8631, # Micro Asymmetric Remote Shield Booster + 8627, # Micro Murky Remote Shield Booster + 8629, # Micro 'Atonement' Remote Shield Booster + 8633, # Micro S95a Remote Shield Booster + ), + 8635: ( # Large Murky Compact Remote Shield Booster + 8637, # Large 'Atonement' Remote Shield Booster + ), + 16507: ( # Medium Knave Scoped Energy Nosferatu + 16509, # E50 Prototype Energy Vampire + ), +} + +def upgrade(saveddata_engine): + + # Convert modules + for replacement_item, list in CONVERSIONS.iteritems(): + for retired_item in list: + saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) + saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) + diff --git a/eve.db b/eve.db index 708420716..16a4c743f 100644 Binary files a/eve.db and b/eve.db differ diff --git a/scripts/conversion.py b/scripts/conversion.py index 5120791d4..9d55f823d 100644 --- a/scripts/conversion.py +++ b/scripts/conversion.py @@ -1,7 +1,5 @@ # Developed for module tiericide, this script will quickly print out a market -# conversion map based on database conversions / renamed modules between two -# eve databases. Correct database conversions must be implemented in upgrade -# script in eos.db.migrations +# conversion map based on patch notes, as well as database conversion mapping. import argparse import os.path @@ -13,7 +11,100 @@ path = os.path.dirname(unicode(__file__, sys.getfilesystemencoding())) sys.path.append(os.path.realpath(os.path.join(path, ".."))) # change to correct conversion -from eos.db.migrations.upgrade4 import CONVERSIONS + +rename_phrase = " is now known as " +conversion_phrase = " has been converted into " + +text = """F-392 Baker Nunn Tracking Disruptor I is now known as Baker Nunn Enduring Tracking Disruptor I +Balmer Series Tracking Disruptor I is now known as Balmer Series Compact Tracking Disruptor I +'Abandon' Tracking Disruptor I is now known as C-IR Compact Guidance Disruptor I +DDO Photometry Tracking Disruptor I is now known as DDO Scoped Tracking Disruptor I +'Distributor' Tracking Disruptor I is now known as 'Distributor' Guidance Disruptor I +5W Infectious Power System Malfunction is now known as Small Infectious Scoped Energy Neutralizer +Small 'Gremlin' Power Core Disruptor I is now known as Small Gremlin Compact Energy Neutralizer +Medium 'Gremlin' Power Core Disruptor I is now known as Medium Gremlin Compact Energy Neutralizer +50W Infectious Power System Malfunction is now known as Medium Infectious Scoped Energy Neutralizer +Heavy 'Gremlin' Power Core Disruptor I is now known as Heavy Gremlin Compact Energy Neutralizer +500W Infectious Power System Malfunction is now known as Heavy Infectious Scoped Energy Neutralizer +'Caltrop' Small Energy Neutralizer I is now known as Small 'Caltrop' Energy Neutralizer +'Ditch' Medium Energy Neutralizer I is now known as Medium 'Ditch' Energy Neutralizer +'Moat' Heavy Energy Neutralizer I is now known as Heavy 'Moat' Energy Neutralizer +Small 'Knave' Energy Drain is now known as Small Knave Scoped Energy Nosferatu +Small 'Ghoul' Energy Siphon I is now known as Small Ghoul Compact Energy Nosferatu +Heavy 'Ghoul' Energy Siphon I is now known as Heavy Ghoul Compact Energy Nosferatu +Heavy 'Knave' Energy Drain is now known as Heavy Knave Scoped Energy Nosferatu +Medium 'Ghoul' Energy Siphon I is now known as Medium Ghoul Compact Energy Nosferatu +Medium 'Knave' Energy Drain is now known as Medium Knave Scoped Energy Nosferatu +'Upir' Small Nosferatu I is now known as Small 'Upir' Energy Nosferatu +'Strigoi' Medium Nosferatu I is now known as Medium 'Strigoi' Energy Nosferatu +'Vrykolakas' Heavy Nosferatu I is now known as Heavy 'Vrykolakas' Energy Nosferatu +M51 Iterative Shield Regenerator is now known as M51 Benefactor Compact Shield Recharger +Basic Shield Power Relay is now known as 'Basic' Shield Power Relay +Type-D Power Core Modification: Shield Power Relay is now known as Type-D Restrained Shield Power Relay +Mark I Generator Refitting: Shield Power Relay is now known as Mark I Compact Shield Power Relay +Basic Shield Flux Coil is now known as 'Basic' Shield Flux Coil +Type-D Power Core Modification: Shield Flux is now known as Type-D Restrained Shield Flux Coil +Mark I Generator Refitting: Shield Flux is now known as Mark I Compact Shield Flux Coil +Micro Remote Shield Booster I is now known as 'Micro' Remote Shield Booster +Capital Murky Remote Shield Booster is now known as CONCORD Capital Remote Shield Booster +Small Murky Remote Shield Booster is now known as Small Murky Compact Remote Shield Booster +Small Asymmetric Remote Shield Booster is now known as Small Asymmetric Enduring Remote Shield Booster +Small S95a Remote Shield Booster is now known as Small S95a Scoped Remote Shield Booster +Medium Murky Remote Shield Booster is now known as Medium Murky Compact Remote Shield Booster +Medium Asymmetric Remote Shield Booster is now known as Medium Asymmetric Enduring Remote Shield Booster +Medium S95a Remote Shield Booster is now known as Medium S95a Scoped Remote Shield Booster +Large Murky Remote Shield Booster is now known as Large Murky Compact Remote Shield Booster +Large Asymmetric Remote Shield Booster is now known as Large Asymmetric Enduring Remote Shield Booster +Large S95a Remote Shield Booster is now known as Large S95a Scoped Remote Shield Booster +Capital Coaxial Remote Armor Repairer is now known as CONCORD Capital Remote Armor Repairer +Small I-ax Remote Armor Repairer is now known as Small I-ax Enduring Remote Armor Repairer +Small Coaxial Remote Armor Repairer is now known as Small Coaxial Compact Remote Armor Repairer +Small 'Solace' Remote Armor Repairer is now known as Small Solace Scoped Remote Armor Repairer +Medium I-ax Remote Armor Repairer is now known as Medium I-ax Enduring Remote Armor Repairer +Medium Coaxial Remote Armor Repairer is now known as Medium Coaxial Compact Remote Armor Repairer +Medium 'Solace' Remote Armor Repairer is now known as Medium Solace Scoped Remote Armor Repairer +Large I-ax Remote Armor Repairer is now known as Large I-ax Enduring Remote Armor Repairer +Large Coaxial Remote Armor Repairer is now known as Large Coaxial Compact Remote Armor Repairer +Large 'Solace' Remote Armor Repairer is now known as Large Solace Scoped Remote Armor Repairer +Small 'Arup' Remote Armor Repairer has been converted into Small Solace Scoped Remote Armor Repairer +'Brotherhood' Small Remote Armor Repairer has been converted into 'Beatnik' Small Remote Armor Repairer +Medium 'Arup' Remote Armor Repairer has been converted into Medium Solace Scoped Remote Armor Repairer +Large 'Arup' Remote Armor Repairer has been converted into Large Solace Scoped Remote Armor Repairer +'Pacifier' Large Remote Armor Repairer has been converted into 'Peace' Large Remote Armor Repairer +Micro Asymmetric Remote Shield Booster has been converted into 'Micro' Remote Shield Booster +Micro Murky Remote Shield Booster has been converted into 'Micro' Remote Shield Booster +Micro 'Atonement' Remote Shield Booster has been converted into 'Micro' Remote Shield Booster +Micro S95a Remote Shield Booster has been converted into 'Micro' Remote Shield Booster +Small 'Atonement' Remote Shield Booster has been converted into Small Murky Compact Remote Shield Booster +Medium 'Atonement' Remote Shield Booster has been converted into Medium Murky Compact Remote Shield Booster +Large 'Atonement' Remote Shield Booster has been converted into Large Murky Compact Remote Shield Booster +E5 Prototype Energy Vampire has been converted into Small Knave Scoped Energy Nosferatu +Small Diminishing Power System Drain I has been converted into Small Ghoul Compact Energy Nosferatu +E50 Prototype Energy Vampire has been converted into Medium Knave Scoped Energy Nosferatu +Medium Diminishing Power System Drain I has been converted into Medium Ghoul Compact Energy Nosferatu +E500 Prototype Energy Vampire has been converted into Heavy Knave Scoped Energy Nosferatu +Heavy Diminishing Power System Drain I has been converted into Heavy Ghoul Compact Energy Nosferatu +Small Rudimentary Energy Destabilizer I has been converted into Small Infectious Scoped Energy Neutralizer +Small Unstable Power Fluctuator I has been converted into Small Gremlin Compact Energy Neutralizer +Medium Rudimentary Energy Destabilizer I has been converted into Medium Infectious Scoped Energy Neutralizer +Medium Unstable Power Fluctuator I has been converted into Medium Gremlin Compact Energy Neutralizer +Heavy Rudimentary Energy Destabilizer I has been converted into Heavy Infectious Scoped Energy Neutralizer +Heavy Unstable Power Fluctuator I has been converted into Heavy Gremlin Compact Energy Neutralizer +Passive Barrier Compensator I has been converted into M51 Benefactor Compact Shield Recharger +'Benefactor' Ward Reconstructor has been converted into M51 Benefactor Compact Shield Recharger +Supplemental Screen Generator I has been converted into M51 Benefactor Compact Shield Recharger +Alpha Reactor Shield Power Relay has been converted into 'Basic' Shield Power Relay +Marked Generator Refitting: Shield Power Relay has been converted into 'Basic' Shield Power Relay +Partial Power Plant Manager: Shield Power Relay has been converted into 'Basic' Shield Power Relay +Type-E Power Core Modification: Shield Power Relay has been converted into 'Basic' Shield Power Relay +Beta Reactor Control: Shield Power Relay I has been converted into Type-D Restrained Shield Power Relay +Local Power Plant Manager: Reaction Shield Power Relay I has been converted into Mark I Compact Shield Power Relay +Alpha Reactor Shield Flux has been converted into 'Basic' Shield Flux Coil +Marked Generator Refitting: Shield Flux has been converted into 'Basic' Shield Flux Coil +Partial Power Plant Manager: Shield Flux has been converted into 'Basic' Shield Flux Coil +Type-E Power Core Modification: Shield Flux has been converted into 'Basic' Shield Flux Coil +Beta Reactor Control: Shield Flux I has been converted into Type-D Restrained Shield Flux Coil +Local Power Plant Manager: Reaction Shield Flux I has been converted into Mark I Compact Shield Flux Coil""" def main(old, new): # Open both databases and get their cursors @@ -22,39 +113,71 @@ def main(old, new): new_db = sqlite3.connect(os.path.expanduser(new)) new_cursor = new_db.cursor() - print "# Renamed items" + renames = {} + conversions = {} - # find renames (stolen from itemDiff) - old_namedata = {} - new_namedata = {} + for x in text.splitlines(): + if conversion_phrase in x: + c = x.split(conversion_phrase) + container = conversions + elif rename_phrase in x: + c = x.split(rename_phrase) + container = renames + else: + print "Unknown format: {}".format(x) + sys.exit() - for cursor, dictionary in ((old_cursor, old_namedata), (new_cursor, new_namedata)): - cursor.execute("SELECT typeID, typeName FROM invtypes") - for row in cursor: - id = row[0] - name = row[1] - dictionary[id] = name + old_name, new_name = c[0], c[1] + old_item, new_item = None, None - for id in set(old_namedata.keys()).intersection(new_namedata.keys()): - oldname = old_namedata[id] - newname = new_namedata[id] - if oldname != newname: - print '"%s": "%s",' % (oldname.encode('utf-8'), newname.encode('utf-8')) - - # Convert modules - print "\n# Converted items" - for replacement_item, list in CONVERSIONS.iteritems(): - new_cursor.execute('SELECT "typeName" FROM "invtypes" WHERE "typeID" = ?', (replacement_item,)) + # gather item info + new_cursor.execute('SELECT "typeID" FROM "invtypes" WHERE "typeName" = ?', (new_name,)) for row in new_cursor: new_item = row[0] break - for retired_item in list: - old_cursor.execute('SELECT "typeName" FROM "invtypes" WHERE "typeID" = ?', (retired_item,)) - for row in old_cursor: - old_item = row[0] - break - print '"%s": "%s",' % (old_item, new_item) + old_cursor.execute('SELECT "typeID" FROM "invtypes" WHERE "typeName" = ?', (old_name,)) + for row in old_cursor: + old_item = row[0] + break + + if not old_item: + print "Error finding old item in {} -> {}".format(old_name, new_name) + if not new_item: + print "Error finding new item in {} -> {}".format(old_name, new_name) + + if not container.get((new_item,new_name), None): + container[(new_item,new_name)] = [] + + + container[(new_item,new_name)].append((old_item, old_name)) + + print " # Renamed items" + + for new, old in renames.iteritems(): + if len(old) != 1: + print "Incorrect length, key: {}, value: {}".format(new, old) + sys.exit() + old = old[0] + + print " \"{}\": \"{}\",".format(old[1], new[1]) + + # Convert modules + print "\n # Converted items" + + for new, olds in conversions.iteritems(): + for old in olds: + print " \"{}\": \"{}\",".format(old[1], new[1]) + + print + print + + for new, old in conversions.iteritems(): + print " {}: ( # {}".format(new[0], new[1]) + for item in old: + print " {}, # {}".format(item[0], item[1]) + print " )," + if __name__ == "__main__": parser = argparse.ArgumentParser() diff --git a/service/conversions/releaseDecember15.py b/service/conversions/releaseDecember15.py index c5a02281d..adcd9e552 100644 --- a/service/conversions/releaseDecember15.py +++ b/service/conversions/releaseDecember15.py @@ -4,90 +4,96 @@ Conversion pack for December 2015 release (no release name) CONVERSIONS = { # Renamed items - "Micro Remote Shield Booster I": "Micro' Remote Shield Booster", + "Medium 'Gremlin' Power Core Disruptor I": "Medium Gremlin Compact Energy Neutralizer", + "Medium Coaxial Remote Armor Repairer": "Medium Coaxial Compact Remote Armor Repairer", + "'Distributor' Tracking Disruptor I": "'Distributor' Guidance Disruptor I", + "Type-D Power Core Modification: Shield Flux": "Type-D Restrained Shield Flux Coil", + "Large Coaxial Remote Armor Repairer": "Large Coaxial Compact Remote Armor Repairer", + "Heavy 'Knave' Energy Drain": "Heavy Knave Scoped Energy Nosferatu", + "F-392 Baker Nunn Tracking Disruptor I": "Baker Nunn Enduring Tracking Disruptor I", + "'Ditch' Medium Energy Neutralizer I": "Medium 'Ditch' Energy Neutralizer", + "DDO Photometry Tracking Disruptor I": "DDO Scoped Tracking Disruptor I", + "Small S95a Remote Shield Booster": "Small S95a Scoped Remote Shield Booster", + "Large S95a Remote Shield Booster": "Large S95a Scoped Remote Shield Booster", + "'Abandon' Tracking Disruptor I": "C-IR Compact Guidance Disruptor I", + "500W Infectious Power System Malfunction": "Heavy Infectious Scoped Energy Neutralizer", + "Heavy 'Gremlin' Power Core Disruptor I": "Heavy Gremlin Compact Energy Neutralizer", + "Medium 'Solace' Remote Armor Repairer": "Medium Solace Scoped Remote Armor Repairer", + "Small Coaxial Remote Armor Repairer": "Small Coaxial Compact Remote Armor Repairer", "Basic Shield Flux Coil": "'Basic' Shield Flux Coil", - "Small Nosferatu I": "Small Energy Nosferatu I", + "Large I-ax Remote Armor Repairer": "Large I-ax Enduring Remote Armor Repairer", "Basic Shield Power Relay": "'Basic' Shield Power Relay", "Capital Coaxial Remote Armor Repairer": "CONCORD Capital Remote Armor Repairer", - "Capital Murky Remote Shield Booster": "CONCORD Capital Remote Shield Booster", - "5W Infectious Power System Malfunction": "Small Infectious Scoped Energy Neutralizer", - "Small 'Gremlin' Power Core Disruptor I": "Small Gremlin Compact Energy Neutralizer", - "Small 'Knave' Energy Drain": "Small Knave Scoped Energy Nosferatu", - "Small 'Ghoul' Energy Siphon I": "Small Ghoul Compact Energy Nosferatu", - "F-392 Baker Nunn Tracking Disruptor I": "Baker Nunn Enduring Tracking Disruptor I", - "Balmer Series Tracking Disruptor I": "Balmer Series Compact Tracking Disruptor I", - "'Abandon' Tracking Disruptor I": "C-IR Compact Guidance Disruptor I", - "DDO Photometry Tracking Disruptor I": "DDO Scoped Tracking Disruptor I", - "M51 Iterative Shield Regenerator": "M51 Benefactor Compact Shield Recharger", - "Type-D Power Core Modification: Shield Flux": "Type-D Restrained Shield Flux Coil", - "Mark I Generator Refitting: Shield Flux": "Mark I Compact Shield Flux Coil", - "Type-D Power Core Modification: Shield Power Relay": "Type-D Restrained Shield Power Relay", - "Mark I Generator Refitting: Shield Power Relay": "Mark I Compact Shield Power Relay", - "Small Murky Remote Shield Booster": "Small Murky Compact Remote Shield Booster", - "Small Asymmetric Remote Shield Booster": "Small Asymmetric Enduring Remote Shield Booster", - "Small S95a Remote Shield Booster": "Small S95a Scoped Remote Shield Booster", - "Medium Murky Remote Shield Booster": "Medium Murky Compact Remote Shield Booster", - "Medium Asymmetric Remote Shield Booster": "Medium Asymmetric Enduring Remote Shield Booster", - "Medium S95a Remote Shield Booster": "Medium S95a Scoped Remote Shield Booster", - "Large Murky Remote Shield Booster": "Large Murky Compact Remote Shield Booster", - "Large Asymmetric Remote Shield Booster": "Large Asymmetric Enduring Remote Shield Booster", - "Large S95a Remote Shield Booster": "Large S95a Scoped Remote Shield Booster", - "Medium Nosferatu I": "Medium Energy Nosferatu I", - "Medium Nosferatu II": "Medium Energy Nosferatu II", - "Heavy Nosferatu I": "Heavy Energy Nosferatu I", - "Heavy Nosferatu II": "Heavy Energy Nosferatu II", - "Small Nosferatu II": "Small Energy Nosferatu II", - "Dark Blood Small Nosferatu": "Dark Blood Small Energy Nosferatu", - "True Sansha Small Nosferatu": "True Sansha Small Energy Nosferatu", - "Dark Blood Heavy Nosferatu": "Dark Blood Heavy Energy Nosferatu", - "True Sansha Heavy Nosferatu": "True Sansha Heavy Energy Nosferatu", - "Dark Blood Medium Nosferatu": "Dark Blood Medium Energy Nosferatu", - "True Sansha Medium Nosferatu": "True Sansha Medium Energy Nosferatu", - "Brokara's Modified Heavy Nosferatu": "Brokara's Modified Heavy Energy Nosferatu", - "Tairei's Modified Heavy Nosferatu": "Tairei's Modified Heavy Energy Nosferatu", - "Selynne's Modified Heavy Nosferatu": "Selynne's Modified Heavy Energy Nosferatu", - "Raysere's Modified Heavy Nosferatu": "Raysere's Modified Heavy Energy Nosferatu", - "Vizan's Modified Heavy Nosferatu": "Vizan's Modified Heavy Energy Nosferatu", - "Ahremen's Modified Heavy Nosferatu": "Ahremen's Modified Heavy Energy Nosferatu", - "Chelm's Modified Heavy Nosferatu": "Chelm's Modified Heavy Energy Nosferatu", - "Draclira's Modified Heavy Nosferatu": "Draclira's Modified Heavy Energy Nosferatu", - "Ammatar Navy Small Nosferatu": "Ammatar Navy Small Energy Nosferatu", - "Ammatar Navy Medium Nosferatu": "Ammatar Navy Medium Energy Nosferatu", - "Ammatar Navy Heavy Nosferatu": "Ammatar Navy Heavy Energy Nosferatu", - "Imperial Navy Small Nosferatu": "Imperial Navy Small Energy Nosferatu", - "Imperial Navy Medium Nosferatu": "Imperial Navy Medium Energy Nosferatu", - "Imperial Navy Heavy Nosferatu": "Imperial Navy Heavy Energy Nosferatu", - "Small I-ax Remote Armor Repairer": "Small I-ax Enduring Remote Armor Repairer", - "Small Coaxial Remote Armor Repairer": "Small Coaxial Compact Remote Armor Repairer", - "Small 'Solace' Remote Armor Repairer": "Small Solace Scoped Remote Armor Repairer", - "Medium I-ax Remote Armor Repairer": "Medium I-ax Enduring Remote Armor Repairer", - "Medium Coaxial Remote Armor Repairer": "Medium Coaxial Compact Remote Armor Repairer", - "Medium 'Solace' Remote Armor Repairer": "Medium Solace Scoped Remote Armor Repairer", - "Large I-ax Remote Armor Repairer": "Large I-ax Enduring Remote Armor Repairer", - "Large Coaxial Remote Armor Repairer": "Large Coaxial Compact Remote Armor Repairer", - "Large 'Solace' Remote Armor Repairer": "Large Solace Scoped Remote Armor Repairer", - "Medium 'Gremlin' Power Core Disruptor I": "Medium Gremlin Compact Energy Neutralizer", - "50W Infectious Power System Malfunction": "Medium Infectious Scoped Energy Neutralizer", - "Heavy 'Gremlin' Power Core Disruptor I": "Heavy Gremlin Compact Energy Neutralizer", - "500W Infectious Power System Malfunction": "Heavy Infectious Scoped Energy Neutralizer", - "Heavy 'Ghoul' Energy Siphon I": "Heavy Ghoul Compact Energy Nosferatu", - "Heavy 'Knave' Energy Drain": "Heavy Knave Scoped Energy Nosferatu", "Medium 'Ghoul' Energy Siphon I": "Medium Ghoul Compact Energy Nosferatu", - "Medium 'Knave' Energy Drain": "Medium Knave Scoped Energy Nosferatu", - "Corpii C-Type Small Nosferatu": "Corpii C-Type Small Energy Nosferatu", - "Corpii B-Type Small Nosferatu": "Corpii B-Type Small Energy Nosferatu", - "Corpii A-Type Small Nosferatu": "Corpii A-Type Small Energy Nosferatu", - "Corpum C-Type Medium Nosferatu": "Corpum C-Type Medium Energy Nosferatu", - "Corpum B-Type Medium Nosferatu": "Corpum B-Type Medium Energy Nosferatu", - "Corpum A-Type Medium Nosferatu": "Corpum A-Type Medium Energy Nosferatu", - "Corpus C-Type Heavy Nosferatu": "Corpus C-Type Heavy Energy Nosferatu", - "Corpus B-Type Heavy Nosferatu": "Corpus B-Type Heavy Energy Nosferatu", - "Corpus A-Type Heavy Nosferatu": "Corpus A-Type Heavy Energy Nosferatu", - "Corpus X-Type Heavy Nosferatu": "Corpus X-Type Heavy Energy Nosferatu", - "'Distributor' Tracking Disruptor I": "'Distributor' Guidance Disruptor I", + "Medium S95a Remote Shield Booster": "Medium S95a Scoped Remote Shield Booster", + "Mark I Generator Refitting: Shield Flux": "Mark I Compact Shield Flux Coil", + "Large 'Solace' Remote Armor Repairer": "Large Solace Scoped Remote Armor Repairer", + "Large Asymmetric Remote Shield Booster": "Large Asymmetric Enduring Remote Shield Booster", + "M51 Iterative Shield Regenerator": "M51 Benefactor Compact Shield Recharger", + "Small 'Knave' Energy Drain": "Small Knave Scoped Energy Nosferatu", + "Medium Murky Remote Shield Booster": "Medium Murky Compact Remote Shield Booster", + "Small Murky Remote Shield Booster": "Small Murky Compact Remote Shield Booster", + "Capital Murky Remote Shield Booster": "CONCORD Capital Remote Shield Booster", "'Caltrop' Small Energy Neutralizer I": "Small 'Caltrop' Energy Neutralizer", - "'Ditch' Medium Energy Neutralizer I": "Medium 'Ditch' Energy Neutralizer", - "'Moat' Heavy Energy Neutralizer I": "Heavy 'Moat' Energy Neutralizer", - "'Upir' Small Nosferatu I": "Small 'Upir' Energy Nosferatu", + "Small I-ax Remote Armor Repairer": "Small I-ax Enduring Remote Armor Repairer", + "'Vrykolakas' Heavy Nosferatu I": "Heavy 'Vrykolakas' Energy Nosferatu", + "Heavy 'Ghoul' Energy Siphon I": "Heavy Ghoul Compact Energy Nosferatu", + "Small Asymmetric Remote Shield Booster": "Small Asymmetric Enduring Remote Shield Booster", + "Small 'Gremlin' Power Core Disruptor I": "Small Gremlin Compact Energy Neutralizer", "'Strigoi' Medium Nosferatu I": "Medium 'Strigoi' Energy Nosferatu", - "'Vrykolakas' Heavy Nosferatu I": "Heavy 'Vrykolakas' Energy Nosferatu", \ No newline at end of file + "'Upir' Small Nosferatu I": "Small 'Upir' Energy Nosferatu", + "Balmer Series Tracking Disruptor I": "Balmer Series Compact Tracking Disruptor I", + "Small 'Solace' Remote Armor Repairer": "Small Solace Scoped Remote Armor Repairer", + "'Moat' Heavy Energy Neutralizer I": "Heavy 'Moat' Energy Neutralizer", + "Small 'Ghoul' Energy Siphon I": "Small Ghoul Compact Energy Nosferatu", + "5W Infectious Power System Malfunction": "Small Infectious Scoped Energy Neutralizer", + "50W Infectious Power System Malfunction": "Medium Infectious Scoped Energy Neutralizer", + "Type-D Power Core Modification: Shield Power Relay": "Type-D Restrained Shield Power Relay", + "Micro Remote Shield Booster I": "'Micro' Remote Shield Booster", + "Medium I-ax Remote Armor Repairer": "Medium I-ax Enduring Remote Armor Repairer", + "Medium Asymmetric Remote Shield Booster": "Medium Asymmetric Enduring Remote Shield Booster", + "Large Murky Remote Shield Booster": "Large Murky Compact Remote Shield Booster", + "Medium 'Knave' Energy Drain": "Medium Knave Scoped Energy Nosferatu", + "Mark I Generator Refitting: Shield Power Relay": "Mark I Compact Shield Power Relay", + + # Converted items + "Medium Unstable Power Fluctuator I": "Medium Gremlin Compact Energy Neutralizer", + "'Brotherhood' Small Remote Armor Repairer": "'Beatnik' Small Remote Armor Repairer", + "Beta Reactor Control: Shield Flux I": "Type-D Restrained Shield Flux Coil", + "E500 Prototype Energy Vampire": "Heavy Knave Scoped Energy Nosferatu", + "Heavy Rudimentary Energy Destabilizer I": "Heavy Infectious Scoped Energy Neutralizer", + "Heavy Unstable Power Fluctuator I": "Heavy Gremlin Compact Energy Neutralizer", + "Medium 'Arup' Remote Armor Repairer": "Medium Solace Scoped Remote Armor Repairer", + "Alpha Reactor Shield Flux": "'Basic' Shield Flux Coil", + "Marked Generator Refitting: Shield Flux": "'Basic' Shield Flux Coil", + "Partial Power Plant Manager: Shield Flux": "'Basic' Shield Flux Coil", + "Type-E Power Core Modification: Shield Flux": "'Basic' Shield Flux Coil", + "Alpha Reactor Shield Power Relay": "'Basic' Shield Power Relay", + "Marked Generator Refitting: Shield Power Relay": "'Basic' Shield Power Relay", + "Partial Power Plant Manager: Shield Power Relay": "'Basic' Shield Power Relay", + "Type-E Power Core Modification: Shield Power Relay": "'Basic' Shield Power Relay", + "Small 'Arup' Remote Armor Repairer": "Small Solace Scoped Remote Armor Repairer", + "Medium Diminishing Power System Drain I": "Medium Ghoul Compact Energy Nosferatu", + "Local Power Plant Manager: Reaction Shield Flux I": "Mark I Compact Shield Flux Coil", + "Large 'Arup' Remote Armor Repairer": "Large Solace Scoped Remote Armor Repairer", + "Passive Barrier Compensator I": "M51 Benefactor Compact Shield Recharger", + "'Benefactor' Ward Reconstructor": "M51 Benefactor Compact Shield Recharger", + "Supplemental Screen Generator I": "M51 Benefactor Compact Shield Recharger", + "E5 Prototype Energy Vampire": "Small Knave Scoped Energy Nosferatu", + "Medium 'Atonement' Remote Shield Booster": "Medium Murky Compact Remote Shield Booster", + "Small 'Atonement' Remote Shield Booster": "Small Murky Compact Remote Shield Booster", + "Heavy Diminishing Power System Drain I": "Heavy Ghoul Compact Energy Nosferatu", + "Small Unstable Power Fluctuator I": "Small Gremlin Compact Energy Neutralizer", + "Local Power Plant Manager: Reaction Shield Power Relay I": "Mark I Compact Shield Power Relay", + "'Pacifier' Large Remote Armor Repairer": "'Peace' Large Remote Armor Repairer", + "Small Diminishing Power System Drain I": "Small Ghoul Compact Energy Nosferatu", + "Small Rudimentary Energy Destabilizer I": "Small Infectious Scoped Energy Neutralizer", + "Medium Rudimentary Energy Destabilizer I": "Medium Infectious Scoped Energy Neutralizer", + "Beta Reactor Control: Shield Power Relay I": "Type-D Restrained Shield Power Relay", + "Micro Asymmetric Remote Shield Booster": "'Micro' Remote Shield Booster", + "Micro Murky Remote Shield Booster": "'Micro' Remote Shield Booster", + "Micro 'Atonement' Remote Shield Booster": "'Micro' Remote Shield Booster", + "Micro S95a Remote Shield Booster": "'Micro' Remote Shield Booster", + "Large 'Atonement' Remote Shield Booster": "Large Murky Compact Remote Shield Booster", + "E50 Prototype Energy Vampire": "Medium Knave Scoped Energy Nosferatu", +} \ No newline at end of file