Example #1
0
# Copyright (C) 2011-2018 Anton Vorobyov
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import WarfareBuffEffect


class ModuleBonusWarfareLinkMining(WarfareBuffEffect):

    friendly_only = True


EffectFactory.register_class_by_id(ModuleBonusWarfareLinkMining,
                                   EffectId.module_bonus_warfare_link_mining)
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import RemoteArmorRepairEffect


class ShipModuleRemoteArmorMutadaptiveRepairer(RemoteArmorRepairEffect):

    def get_rep_amount(self, item):
        rep_amount = item.attrs.get(AttrId.armor_dmg_amount, 0)
        try:
            spoolup_mult = 1 + item.attrs[AttrId.repair_mult_bonus_max]
        except KeyError:
            spoolup_mult = 1
        return rep_amount * spoolup_mult


EffectFactory.register_class_by_id(
    ShipModuleRemoteArmorMutadaptiveRepairer,
    EffectId.ship_module_remote_armor_mutadaptive_repairer)
Example #3
0
# Copyright (C) 2011-2018 Anton Vorobyov
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import WarfareBuffEffect


class ModuleBonusWarfareLinkInfo(WarfareBuffEffect):

    friendly_only = True


EffectFactory.register_class_by_id(ModuleBonusWarfareLinkInfo,
                                   EffectId.module_bonus_warfare_link_info)
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import BaseNeutEffect


class EnergyNeutralizerFalloff(BaseNeutEffect):

    def get_neut_amount(self, item):
        return item.attrs.get(AttrId.energy_neutralizer_amount, 0)


EffectFactory.register_class_by_id(
    EnergyNeutralizerFalloff,
    EffectId.energy_neutralizer_falloff)
Example #5
0
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from eos.eve_obj.effect.helper_func import get_cycles_until_reload_generic
from .base import RemoteArmorRepairEffect


class ShipModuleAncillaryRemoteArmorRepairer(RemoteArmorRepairEffect):
    def get_cycles_until_reload(self, item):
        return get_cycles_until_reload_generic(item)

    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.armor_dmg_amount, 0)


EffectFactory.register_class_by_id(
    ShipModuleAncillaryRemoteArmorRepairer,
    EffectId.ship_module_ancillary_remote_armor_repairer)
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import BaseCapTransmitEffect


class ShipModuleRemoteCapacitorTransmitter(BaseCapTransmitEffect):
    def get_cap_transmit_amount(self, item):
        return item.attrs.get(AttrId.power_transfer_amount, 0)


EffectFactory.register_class_by_id(
    ShipModuleRemoteCapacitorTransmitter,
    EffectId.ship_module_remote_capacitor_transmitter)
Example #7
0
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import WarfareBuffEffect


class ModuleBonusWarfareLinkSkirmish(WarfareBuffEffect):

        friendly_only = True


EffectFactory.register_class_by_id(
    ModuleBonusWarfareLinkSkirmish,
    EffectId.module_bonus_warfare_link_skirmish)
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


import math

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from eos.eve_obj.effect.helper_func import get_cycles_until_reload_generic
from .base import RemoteShieldRepairEffect


class ShipModuleAncillaryRemoteShieldBooster(RemoteShieldRepairEffect):

    def get_cycles_until_reload(self, item):
        return get_cycles_until_reload_generic(item, default=math.inf)

    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.shield_bonus, 0)


EffectFactory.register_class_by_id(
    ShipModuleAncillaryRemoteShieldBooster,
    EffectId.ship_module_ancillary_remote_shield_booster)
Example #9
0
# Copyright (C) 2011-2018 Anton Vorobyov
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .chain_lightning import ChainLightning
from .projectile_fired import ProjectileFired
from .target_disintegrator_attack import TargetDisintegratorAttack
from .target_attack import TargetAttack

EffectFactory.register_class_by_id(ChainLightning, EffectId.chain_lightning)
EffectFactory.register_class_by_id(ProjectileFired, EffectId.projectile_fired)
EffectFactory.register_class_by_id(TargetDisintegratorAttack,
                                   EffectId.target_disintegrator_attack)
EffectFactory.register_class_by_id(TargetAttack, EffectId.target_attack)
Example #10
0
# Copyright (C) 2011-2018 Anton Vorobyov
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import LocalShieldRepairEffect


class ShieldBoosting(LocalShieldRepairEffect):
    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.shield_bonus, 0)


EffectFactory.register_class_by_id(ShieldBoosting, EffectId.shield_boosting)
Example #11
0
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .attack_m import FighterAbilityAttackM
from .kamikaze import FighterAbilityKamikaze
from .launch_bomb import FighterAbilityLaunchBomb
from .missiles import FighterAbilityMissiles

EffectFactory.register_class_by_id(FighterAbilityAttackM,
                                   EffectId.fighter_ability_attack_m)
EffectFactory.register_class_by_id(FighterAbilityKamikaze,
                                   EffectId.fighter_ability_kamikaze)
EffectFactory.register_class_by_id(FighterAbilityLaunchBomb,
                                   EffectId.fighter_ability_launch_bomb)
EffectFactory.register_class_by_id(FighterAbilityMissiles,
                                   EffectId.fighter_ability_missiles)
Example #12
0
            affectee_filter=ModAffecteeFilter.owner_skillrq,
            affectee_domain=ModDomain.target,
            affectee_filter_extra_arg=TypeId.missile_launcher_operation,
            affectee_attr_id=AttrId.aoe_velocity,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.aoe_velocity_bonus)
        max_velocity_modifier = DogmaModifier(
            affectee_filter=ModAffecteeFilter.owner_skillrq,
            affectee_domain=ModDomain.target,
            affectee_filter_extra_arg=TypeId.missile_launcher_operation,
            affectee_attr_id=AttrId.max_velocity,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.missile_velocity_bonus)
        explosion_delay_modifier = DogmaModifier(
            affectee_filter=ModAffecteeFilter.owner_skillrq,
            affectee_domain=ModDomain.target,
            affectee_filter_extra_arg=TypeId.missile_launcher_operation,
            affectee_attr_id=AttrId.explosion_delay,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.explosion_delay_bonus)
        self.modifiers = (*self.modifiers, aoe_cloud_size_modifier,
                          aoe_velocity_modifier, max_velocity_modifier,
                          explosion_delay_modifier)


EffectFactory.register_class_by_id(ShipModuleGundanceDisruptor,
                                   EffectId.ship_module_guidance_disruptor)
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import BaseCapTransmitEffect


class ShipModuleRemoteCapacitorTransmitter(BaseCapTransmitEffect):

    def get_cap_transmit_amount(self, item):
        return item.attrs.get(AttrId.power_transfer_amount, 0)


EffectFactory.register_class_by_id(
    ShipModuleRemoteCapacitorTransmitter,
    EffectId.ship_module_remote_capacitor_transmitter)
Example #14
0
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from eos.stats_container import DmgStats
from .base import DmgDealerEffect


class EmpWave(DmgDealerEffect):
    def get_volley(self, item):
        em = item.attrs.get(AttrId.em_dmg, 0)
        therm = item.attrs.get(AttrId.therm_dmg, 0)
        kin = item.attrs.get(AttrId.kin_dmg, 0)
        expl = item.attrs.get(AttrId.expl_dmg, 0)
        return DmgStats(em, therm, kin, expl)

    def get_applied_volley(self, item, tgt_data):
        raise NotImplementedError


EffectFactory.register_class_by_id(EmpWave, EffectId.emp_wave)
Example #15
0
    def get_volley(self, item):
        if not self.get_cycles_until_reload(item):
            return DmgStats(0, 0, 0, 0)
        # If module can cycle until reload, it means we can assume that there's
        # a charge loaded
        charge = self.get_charge(item)
        charge_defeff_id = charge._type_default_effect_id
        if (
            charge_defeff_id is None or
            charge_defeff_id not in charge._running_effect_ids or
            charge_defeff_id not in (
                EffectId.missile_launching,
                EffectId.fof_missile_launching,
                EffectId.bomb_launching)
        ):
            return DmgStats(0, 0, 0, 0)
        em = charge.attrs.get(AttrId.em_dmg, 0)
        therm = charge.attrs.get(AttrId.therm_dmg, 0)
        kin = charge.attrs.get(AttrId.kin_dmg, 0)
        expl = charge.attrs.get(AttrId.expl_dmg, 0)
        return DmgStats(em, therm, kin, expl)

    def get_applied_volley(self, item, tgt_data):
        raise NotImplementedError


EffectFactory.register_class_by_id(
    UseMissiles,
    EffectId.use_missiles)
Example #16
0
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from eos.stats_container import DmgStats
from .base import DmgDealerEffect


class EmpWave(DmgDealerEffect):

    def get_volley(self, item):
        em = item.attrs.get(AttrId.em_dmg, 0)
        therm = item.attrs.get(AttrId.therm_dmg, 0)
        kin = item.attrs.get(AttrId.kin_dmg, 0)
        expl = item.attrs.get(AttrId.expl_dmg, 0)
        return DmgStats(em, therm, kin, expl)

    def get_applied_volley(self, item, tgt_data):
        raise NotImplementedError


EffectFactory.register_class_by_id(
    EmpWave,
    EffectId.emp_wave)
Example #17
0
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .direct_dmg import DoomsdayDirect


EffectFactory.register_class_by_id(
    DoomsdayDirect,
    EffectId.super_weapon_amarr)
EffectFactory.register_class_by_id(
    DoomsdayDirect,
    EffectId.super_weapon_caldari)
EffectFactory.register_class_by_id(
    DoomsdayDirect,
    EffectId.super_weapon_gallente)
EffectFactory.register_class_by_id(
    DoomsdayDirect,
    EffectId.super_weapon_minmatar)
Example #18
0
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

import math

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from eos.eve_obj.effect.helper_func import get_cycles_until_reload_generic
from .base import LocalShieldRepairEffect


class FueledShieldBoosting(LocalShieldRepairEffect):
    def get_cycles_until_reload(self, item):
        return get_cycles_until_reload_generic(item, default=math.inf)

    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.shield_bonus, 0)


EffectFactory.register_class_by_id(FueledShieldBoosting,
                                   EffectId.fueled_shield_boosting)
Example #19
0
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import RemoteArmorRepairEffect


class NpcEntityRemoteArmorRepairer(RemoteArmorRepairEffect):
    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.armor_dmg_amount, 0)


EffectFactory.register_class_by_id(NpcEntityRemoteArmorRepairer,
                                   EffectId.npc_entity_remote_armor_repairer)
Example #20
0
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .attack_m import FighterAbilityAttackM
from .kamikaze import FighterAbilityKamikaze
from .launch_bomb import FighterAbilityLaunchBomb
from .missiles import FighterAbilityMissiles


EffectFactory.register_class_by_id(
    FighterAbilityAttackM,
    EffectId.fighter_ability_attack_m)
EffectFactory.register_class_by_id(
    FighterAbilityKamikaze,
    EffectId.fighter_ability_kamikaze)
EffectFactory.register_class_by_id(
    FighterAbilityLaunchBomb,
    EffectId.fighter_ability_launch_bomb)
EffectFactory.register_class_by_id(
    FighterAbilityMissiles,
    EffectId.fighter_ability_missiles)
Example #21
0
File: web.py Project: pyfa-org/eos
# ==============================================================================

from eos.const.eos import ModAffecteeFilter
from eos.const.eos import ModAggregateMode
from eos.const.eos import ModDomain
from eos.const.eos import ModOperator
from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import Effect
from eos.eve_obj.effect import EffectFactory
from eos.eve_obj.modifier import DogmaModifier


class RemoteWebifierFalloff(Effect):
    def __init__(self, *args, resist_attr_id=None, **kwargs):
        Effect.__init__(self,
                        *args,
                        resist_attr_id=AttrId.stasis_webifier_resist,
                        **kwargs)
        modifier = DogmaModifier(affectee_filter=ModAffecteeFilter.item,
                                 affectee_domain=ModDomain.target,
                                 affectee_attr_id=AttrId.max_velocity,
                                 operator=ModOperator.post_percent,
                                 aggregate_mode=ModAggregateMode.stack,
                                 affector_attr_id=AttrId.speed_factor)
        self.modifiers = (*self.modifiers, modifier)


EffectFactory.register_class_by_id(RemoteWebifierFalloff,
                                   EffectId.remote_webifier_falloff)
Example #22
0
            affectee_domain=ModDomain.target,
            affectee_filter_extra_arg=TypeId.gunnery,
            affectee_attr_id=AttrId.max_range,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.max_range_bonus)
        falloff_modifier = DogmaModifier(
            affectee_filter=ModAffecteeFilter.domain_skillrq,
            affectee_domain=ModDomain.target,
            affectee_filter_extra_arg=TypeId.gunnery,
            affectee_attr_id=AttrId.falloff,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.falloff_bonus)
        tracking_speed_modifier = DogmaModifier(
            affectee_filter=ModAffecteeFilter.domain_skillrq,
            affectee_domain=ModDomain.target,
            affectee_filter_extra_arg=TypeId.gunnery,
            affectee_attr_id=AttrId.tracking_speed,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.tracking_speed_bonus)
        self.modifiers = (
            *self.modifiers, max_range_modifier,
            falloff_modifier, tracking_speed_modifier)


EffectFactory.register_class_by_id(
    ShipModuleTrackingDisruptor,
    EffectId.ship_module_tracking_disruptor)
Example #23
0
        max_range_modifier = DogmaModifier(
            affectee_filter=ModAffecteeFilter.domain_skillrq,
            affectee_domain=ModDomain.target,
            affectee_filter_extra_arg=TypeId.gunnery,
            affectee_attr_id=AttrId.max_range,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.max_range_bonus)
        falloff_modifier = DogmaModifier(
            affectee_filter=ModAffecteeFilter.domain_skillrq,
            affectee_domain=ModDomain.target,
            affectee_filter_extra_arg=TypeId.gunnery,
            affectee_attr_id=AttrId.falloff,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.falloff_bonus)
        tracking_speed_modifier = DogmaModifier(
            affectee_filter=ModAffecteeFilter.domain_skillrq,
            affectee_domain=ModDomain.target,
            affectee_filter_extra_arg=TypeId.gunnery,
            affectee_attr_id=AttrId.tracking_speed,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.tracking_speed_bonus)
        self.modifiers = (*self.modifiers, max_range_modifier,
                          falloff_modifier, tracking_speed_modifier)


EffectFactory.register_class_by_id(ShipModuleTrackingDisruptor,
                                   EffectId.ship_module_tracking_disruptor)
Example #24
0
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import BaseNeutEffect


class EnergyNosferatuFalloff(BaseNeutEffect):
    def get_neut_amount(self, item):
        if item.attrs.get(AttrId.nos_override, 0):
            return item.attrs.get(AttrId.power_transfer_amount, 0)
        return 0


EffectFactory.register_class_by_id(EnergyNosferatuFalloff,
                                   EffectId.energy_nosferatu_falloff)
Example #25
0
# Copyright (C) 2011-2018 Anton Vorobyov
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import LocalArmorRepairEffect


class ArmorRepair(LocalArmorRepairEffect):
    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.armor_dmg_amount, 0)


EffectFactory.register_class_by_id(ArmorRepair, EffectId.armor_repair)
Example #26
0
File: web.py Project: DarkFenX/eos
from eos.const.eos import ModAffecteeFilter
from eos.const.eos import ModAggregateMode
from eos.const.eos import ModDomain
from eos.const.eos import ModOperator
from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import Effect
from eos.eve_obj.effect import EffectFactory
from eos.eve_obj.modifier import DogmaModifier


class RemoteWebifierFalloff(Effect):

    def __init__(self, *args, resist_attr_id=None, **kwargs):
        Effect.__init__(
            self, *args, resist_attr_id=AttrId.stasis_webifier_resist,
            **kwargs)
        modifier = DogmaModifier(
            affectee_filter=ModAffecteeFilter.item,
            affectee_domain=ModDomain.target,
            affectee_attr_id=AttrId.max_velocity,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.speed_factor)
        self.modifiers = (*self.modifiers, modifier)


EffectFactory.register_class_by_id(
    RemoteWebifierFalloff,
    EffectId.remote_webifier_falloff)
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import RemoteShieldRepairEffect


class NpcEntityRemoteShieldBooster(RemoteShieldRepairEffect):

    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.shield_bonus, 0)


EffectFactory.register_class_by_id(
    NpcEntityRemoteShieldBooster,
    EffectId.npc_entity_remote_shield_booster)
Example #28
0
# Copyright (C) 2011 Diego Duclos
# Copyright (C) 2011-2018 Anton Vorobyov
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .direct_dmg import DoomsdayDirect

EffectFactory.register_class_by_id(DoomsdayDirect, EffectId.super_weapon_amarr)
EffectFactory.register_class_by_id(DoomsdayDirect,
                                   EffectId.super_weapon_caldari)
EffectFactory.register_class_by_id(DoomsdayDirect,
                                   EffectId.super_weapon_gallente)
EffectFactory.register_class_by_id(DoomsdayDirect,
                                   EffectId.super_weapon_minmatar)
Example #29
0
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from eos.eve_obj.effect.helper_func import get_cycles_until_reload_generic
from .base import LocalArmorRepairEffect


class FueledArmorRepair(LocalArmorRepairEffect):
    def get_cycles_until_reload(self, item):
        return get_cycles_until_reload_generic(item)

    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.armor_dmg_amount, 0)


EffectFactory.register_class_by_id(FueledArmorRepair,
                                   EffectId.fueled_armor_repair)
Example #30
0
# ==============================================================================
# Copyright (C) 2011 Diego Duclos
# Copyright (C) 2011-2018 Anton Vorobyov
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .projectile_fired import ProjectileFired
from .target_abc_attack import TargetABCAttack
from .target_attack import TargetAttack

EffectFactory.register_class_by_id(ProjectileFired, EffectId.projectile_fired)
EffectFactory.register_class_by_id(TargetABCAttack, EffectId.target_abc_attack)
EffectFactory.register_class_by_id(TargetAttack, EffectId.target_attack)
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import RemoteShieldRepairEffect


class NpcEntityRemoteShieldBooster(RemoteShieldRepairEffect):
    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.shield_bonus, 0)


EffectFactory.register_class_by_id(NpcEntityRemoteShieldBooster,
                                   EffectId.npc_entity_remote_shield_booster)
Example #32
0
File: damp.py Project: pyfa-org/eos
from eos.const.eos import ModAffecteeFilter
from eos.const.eos import ModAggregateMode
from eos.const.eos import ModDomain
from eos.const.eos import ModOperator
from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import Effect
from eos.eve_obj.effect import EffectFactory
from eos.eve_obj.modifier import DogmaModifier


class RemoteSensorDampFalloff(Effect):

    def __init__(self, *args, resist_attr_id=None, **kwargs):
        Effect.__init__(
            self, *args, resist_attr_id=AttrId.sensor_dampener_resist,
            **kwargs)
        modifier = DogmaModifier(
            affectee_filter=ModAffecteeFilter.item,
            affectee_domain=ModDomain.target,
            affectee_attr_id=AttrId.max_target_range,
            operator=ModOperator.post_percent,
            aggregate_mode=ModAggregateMode.stack,
            affector_attr_id=AttrId.max_target_range_bonus)
        self.modifiers = (*self.modifiers, modifier)


EffectFactory.register_class_by_id(
    RemoteSensorDampFalloff,
    EffectId.remote_sensor_damp_falloff)
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import RemoteArmorRepairEffect


class ShipModuleRemoteArmorRepairer(RemoteArmorRepairEffect):

    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.armor_dmg_amount, 0)


EffectFactory.register_class_by_id(
    ShipModuleRemoteArmorRepairer,
    EffectId.ship_module_remote_armor_repairer)
Example #34
0
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import LocalArmorRepairEffect


class ArmorRepair(LocalArmorRepairEffect):

    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.armor_dmg_amount, 0)


EffectFactory.register_class_by_id(
    ArmorRepair,
    EffectId.armor_repair)
Example #35
0
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .projectile_fired import ProjectileFired
from .target_abc_attack import TargetABCAttack
from .target_attack import TargetAttack


EffectFactory.register_class_by_id(
    ProjectileFired,
    EffectId.projectile_fired)
EffectFactory.register_class_by_id(
    TargetABCAttack,
    EffectId.target_abc_attack)
EffectFactory.register_class_by_id(
    TargetAttack,
    EffectId.target_attack)
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import RemoteArmorRepairEffect


class NpcEntityRemoteArmorRepairer(RemoteArmorRepairEffect):

    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.armor_dmg_amount, 0)


EffectFactory.register_class_by_id(
    NpcEntityRemoteArmorRepairer,
    EffectId.npc_entity_remote_armor_repairer)
Example #37
0
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import BaseNeutEffect


class EnergyNosferatuFalloff(BaseNeutEffect):

    def get_neut_amount(self, item):
        if item.attrs.get(AttrId.nos_override, 0):
            return item.attrs.get(AttrId.power_transfer_amount, 0)
        return 0


EffectFactory.register_class_by_id(
    EnergyNosferatuFalloff,
    EffectId.energy_nosferatu_falloff)
Example #38
0
# Copyright (C) 2011-2018 Anton Vorobyov
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import WarfareBuffEffect


class ModuleBonusWarfareLinkArmor(WarfareBuffEffect):

    friendly_only = True


EffectFactory.register_class_by_id(ModuleBonusWarfareLinkArmor,
                                   EffectId.module_bonus_warfare_link_armor)
Example #39
0
# Copyright (C) 2011-2018 Anton Vorobyov
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import WarfareBuffEffect


class ModuleBonusWarfareLinkShield(WarfareBuffEffect):

    friendly_only = True


EffectFactory.register_class_by_id(ModuleBonusWarfareLinkShield,
                                   EffectId.module_bonus_warfare_link_shield)
#
# This file is part of Eos.
#
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import BaseNeutEffect


class EntityEnergyNeutralizerFalloff(BaseNeutEffect):
    def get_neut_amount(self, item):
        return item.attrs.get(AttrId.energy_neutralizer_amount, 0)


EffectFactory.register_class_by_id(EntityEnergyNeutralizerFalloff,
                                   EffectId.entity_energy_neutralizer_falloff)
Example #41
0
# Eos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Eos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Eos. If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================


from eos.const.eve import AttrId
from eos.const.eve import EffectId
from eos.eve_obj.effect import EffectFactory
from .base import LocalShieldRepairEffect


class ShieldBoosting(LocalShieldRepairEffect):

    def get_rep_amount(self, item):
        return item.attrs.get(AttrId.shield_bonus, 0)


EffectFactory.register_class_by_id(
    ShieldBoosting,
    EffectId.shield_boosting)