| 57 | |
| 58 | |
| 59 | class ModuleInfo: |
| 60 | |
| 61 | def __init__( |
| 62 | self, itemID, baseItemID=None, mutaplasmidID=None, mutations=None, chargeID=None, |
| 63 | state=None, spoolType=None, spoolAmount=None, rahPattern=None): |
| 64 | self.itemID = itemID |
| 65 | self.baseItemID = baseItemID |
| 66 | self.mutaplasmidID = mutaplasmidID |
| 67 | self.mutations = mutations |
| 68 | self.chargeID = chargeID |
| 69 | self.state = state |
| 70 | self.spoolType = spoolType |
| 71 | self.spoolAmount = spoolAmount |
| 72 | self.rahPattern = rahPattern |
| 73 | |
| 74 | @classmethod |
| 75 | def fromModule(cls, mod, unmutate=False): |
| 76 | if mod is None: |
| 77 | return None |
| 78 | if unmutate and mod.isMutated: |
| 79 | info = cls( |
| 80 | itemID=mod.baseItemID, |
| 81 | baseItemID=None, |
| 82 | mutaplasmidID=None, |
| 83 | mutations={}, |
| 84 | chargeID=mod.chargeID, |
| 85 | state=mod.state, |
| 86 | spoolType=mod.spoolType, |
| 87 | spoolAmount=mod.spoolAmount, |
| 88 | rahPattern=mod.rahPatternOverride) |
| 89 | else: |
| 90 | info = cls( |
| 91 | itemID=mod.itemID, |
| 92 | baseItemID=mod.baseItemID, |
| 93 | mutaplasmidID=mod.mutaplasmidID, |
| 94 | mutations={m.attrID: m.value for m in mod.mutators.values()}, |
| 95 | chargeID=mod.chargeID, |
| 96 | state=mod.state, |
| 97 | spoolType=mod.spoolType, |
| 98 | spoolAmount=mod.spoolAmount, |
| 99 | rahPattern=mod.rahPatternOverride) |
| 100 | return info |
| 101 | |
| 102 | def toModule(self, fallbackState=None): |
| 103 | mkt = Market.getInstance() |
| 104 | |
| 105 | item = mkt.getItem(self.itemID, eager=('attributes', 'group.category')) |
| 106 | if self.baseItemID and self.mutaplasmidID: |
| 107 | baseItem = mkt.getItem(self.baseItemID, eager=('attributes', 'group.category')) |
| 108 | mutaplasmid = eos.db.getDynamicItem(self.mutaplasmidID) |
| 109 | else: |
| 110 | baseItem = None |
| 111 | mutaplasmid = None |
| 112 | try: |
| 113 | mod = Module(item, baseItem=baseItem, mutaplasmid=mutaplasmid) |
| 114 | except ValueError: |
| 115 | pyfalog.warning('Invalid item: {}'.format(self.itemID)) |
| 116 | return None |