Update how mining waste is processed, to make it in line with new effects

This commit is contained in:
DarkPhoenix
2021-12-02 14:15:29 +03:00
parent dbf9875d25
commit e0377a084f
3 changed files with 18 additions and 12 deletions

View File

@@ -3781,8 +3781,18 @@ class Effect1200(BaseEffect):
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.multiplyItemAttr('specialtyMiningAmount',
module.getModifiedChargeAttr('specializationAsteroidYieldMultiplier'), **kwargs)
module.multiplyItemAttr(
'miningAmount',
module.getModifiedChargeAttr('specializationAsteroidYieldMultiplier'),
**kwargs)
module.increaseItemAttr(
'miningWastedVolumeMultiplier',
module.getModifiedChargeAttr('specializationCrystalMiningWastedVolumeMultiplierBonus'),
**kwargs)
module.increaseItemAttr(
'miningWasteProbability',
module.getModifiedChargeAttr('specializationCrystalMiningWasteProbabilityBonus'),
**kwargs)
class Effect1212(BaseEffect):
@@ -36846,9 +36856,9 @@ class Effect8119(BaseEffect):
fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), **kwargs)
# Local Shield Repper Bonuses
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'),
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'duration', src.getModifiedItemAttr('industrialCoreLocalLogisticsDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'),
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', src.getModifiedItemAttr('industrialCoreLocalLogisticsAmountBonus'),
stackingPenalties=True, **kwargs)

View File

@@ -263,9 +263,9 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut, Mu
cycleTime = cycleParams.averageTime
yield_ = sum([getter(d) for d in self.MINING_ATTRIBUTES]) * self.amountActive
yps = yield_ / (cycleTime / 1000.0)
wasteChance = max(0, min(100, self.getModifiedItemAttr("miningWasteProbability")))
wasteChance = self.getModifiedItemAttr("miningWasteProbability")
wasteMult = self.getModifiedItemAttr("miningWastedVolumeMultiplier")
wps = yps * (wasteChance / 100) * wasteMult
wps = yps * max(0, min(1, wasteChance / 100)) * wasteMult
return yps, wps
else:
return 0, 0

View File

@@ -426,7 +426,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut, M
if self.isEmpty:
return 0, 0
if self.state >= FittingModuleState.ACTIVE:
yield_ = self.getModifiedItemAttr("specialtyMiningAmount") or self.getModifiedItemAttr("miningAmount") or 0
yield_ = self.getModifiedItemAttr("miningAmount")
if yield_:
cycleParams = self.getCycleParameters()
if cycleParams is None:
@@ -440,11 +440,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut, M
yps = 0
wasteChance = self.getModifiedItemAttr("miningWasteProbability")
wasteMult = self.getModifiedItemAttr("miningWastedVolumeMultiplier")
if self.charge is not None:
wasteChance += self.getModifiedChargeAttr("specializationCrystalMiningWasteProbabilityBonus", 0)
wasteMult *= self.getModifiedChargeAttr("specializationCrystalMiningWastedVolumeMultiplierBonus", 1)
wasteChance = max(0, min(100, wasteChance))
wps = yps * (wasteChance / 100) * wasteMult
wps = yps * max(0, min(1, wasteChance / 100)) * wasteMult
return yps, wps
def isDealingDamage(self, ignoreState=False):