예제 #1
0
 def test_ability_disabling_no_ability(self):
     # Setup
     src_attr = self.mkattr()
     tgt_attr = self.mkattr()
     modifier = self.mkmod(
         affectee_filter=ModAffecteeFilter.item,
         affectee_domain=ModDomain.self,
         affectee_attr_id=tgt_attr.id,
         operator=ModOperator.post_percent,
         affector_attr_id=src_attr.id)
     effect = self.mkeffect(
         effect_id=EffectId.fighter_ability_attack_m,
         category_id=EffectCategoryId.active,
         modifiers=[modifier])
     fighter_type = self.mktype(
         attrs={src_attr.id: 50, tgt_attr.id: 10},
         effects=[effect],
         default_effect=effect,
         abilities_data={
             FighterAbilityId.pulse_cannon: AbilityData(0, math.inf)})
     fit = Fit()
     item = FighterSquad(fighter_type.id, state=State.active)
     fit.fighters.add(item)
     self.assertAlmostEqual(item.attrs[tgt_attr.id], 15)
     # Verification
     with self.assertRaises(NoSuchAbilityError):
         item.set_ability_status(FighterAbilityId.beam_cannon, False)
     self.assertIs(item.abilities[FighterAbilityId.pulse_cannon], True)
     self.assertAlmostEqual(item.attrs[tgt_attr.id], 15)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
예제 #2
0
 def test_ability_disabling_item_not_loaded(self):
     # Setup
     fit = Fit()
     item = FighterSquad(self.allocate_type_id(), state=State.active)
     fit.fighters.add(item)
     # Verification
     with self.assertRaises(NoSuchAbilityError):
         item.set_ability_status(FighterAbilityId.beam_cannon, False)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)