| 37 | |
| 38 | |
| 39 | class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut, MutatedMixin): |
| 40 | MINING_ATTRIBUTES = ("miningAmount",) |
| 41 | |
| 42 | def __init__(self, item, baseItem=None, mutaplasmid=None): |
| 43 | """Initialize a drone from the program""" |
| 44 | self._item = item |
| 45 | self._mutaInit(baseItem=baseItem, mutaplasmid=mutaplasmid) |
| 46 | |
| 47 | if self.isInvalid: |
| 48 | raise ValueError("Passed item is not a Drone") |
| 49 | |
| 50 | self.itemID = item.ID if item is not None else None |
| 51 | self.amount = 0 |
| 52 | self.amountActive = 0 |
| 53 | self.projected = False |
| 54 | self.projectionRange = None |
| 55 | self.build() |
| 56 | |
| 57 | @reconstructor |
| 58 | def init(self): |
| 59 | """Initialize a drone from the database and validate""" |
| 60 | self._item = None |
| 61 | |
| 62 | if self.itemID: |
| 63 | self._item = eos.db.getItem(self.itemID) |
| 64 | if self._item is None: |
| 65 | pyfalog.error("Item (id: {0}) does not exist", self.itemID) |
| 66 | return |
| 67 | |
| 68 | try: |
| 69 | self._mutaReconstruct() |
| 70 | except MutaError: |
| 71 | return |
| 72 | |
| 73 | if self.isInvalid: |
| 74 | pyfalog.error("Item (id: {0}) is not a Drone", self.itemID) |
| 75 | return |
| 76 | |
| 77 | self.build() |
| 78 | |
| 79 | def build(self): |
| 80 | """ Build object. Assumes proper and valid item already set """ |
| 81 | self.__charge = None |
| 82 | self.__baseVolley = None |
| 83 | self.__baseRRAmount = None |
| 84 | self.__miningYield = None |
| 85 | self.__miningDrain = None |
| 86 | self.__ehp = None |
| 87 | self.__itemModifiedAttributes = ModifiedAttributeDict() |
| 88 | self.__itemModifiedAttributes.original = self._item.attributes |
| 89 | self.__itemModifiedAttributes.overrides = self._item.overrides |
| 90 | self.__chargeModifiedAttributes = ModifiedAttributeDict() |
| 91 | |
| 92 | self._mutaLoadMutators(mutatorClass=MutatorDrone) |
| 93 | self.__itemModifiedAttributes.mutators = self.mutators |
| 94 | |
| 95 | chargeID = self.getModifiedItemAttr("entityMissileTypeID", None) |
| 96 | if chargeID: |
no outgoing calls
no test coverage detected