From a5b959fbf8c470d947ceb588f10402a75632a9c1 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sun, 20 May 2018 14:22:58 -0400 Subject: [PATCH] Implement caustic and darkness weather --- eos/effects/weatherdarkness.py | 13 ++++++++++--- eos/saveddata/fit.py | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/eos/effects/weatherdarkness.py b/eos/effects/weatherdarkness.py index 726601d67..708ce8925 100644 --- a/eos/effects/weatherdarkness.py +++ b/eos/effects/weatherdarkness.py @@ -1,6 +1,13 @@ runTime = "early" -type = ("projected", "passive") +type = ("projected", "passive", "gang") -def handler(fit, beacon, context): - pass +def handler(fit, beacon, context, **kwargs): + for x in range(1, 3): + if beacon.getModifiedItemAttr("warfareBuff{}ID".format(x)): + value = beacon.getModifiedItemAttr("warfareBuff{}Value".format(x)) + id = beacon.getModifiedItemAttr("warfareBuff{}ID".format(x)) + + if id: + fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') + diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index 2f4cb90f2..b9b01f229 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -680,6 +680,23 @@ class Fit(object): if warfareBuffID == 96: # Weather_infernal_armor_hp_bonus self.ship.boostItemAttr("armorHP", value) # for hull + if warfareBuffID == 97: # Weather_darkness_turret_range_penalty + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), + "maxRange", value, stackingPenalties=True) + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), + "falloff", value, stackingPenalties=True) + + if warfareBuffID == 98: # Weather_darkness_velocity_bonus + self.ship.boostItemAttr("maxVelocity", value) + + if warfareBuffID == 99: # Weather_caustic_toxin_kinetic_resistance_penalty + for tankType in ("shield", "armor"): + self.ship.boostItemAttr("{}KineticDamageResonance".format(tankType), value) + self.ship.boostItemAttr("kineticDamageResonance", value) # for hull + + if warfareBuffID == 100: # Weather_caustic_toxin_scan_resolution_bonus + self.ship.boostItemAttr("scanResolution", value, stackingPenalties=True) + del self.commandBonuses[warfareBuffID] def __resetDependentCalcs(self):