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)
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)