tests: verarbeite kritische Treffer auch bei großen Bauteilen

This commit is contained in:
2026-07-09 17:11:09 +02:00
parent 0c985589a2
commit d8df5db7f4
5 changed files with 57 additions and 32 deletions
+34 -12
View File
@@ -1,5 +1,4 @@
from MechFabrik import Cockpit, Sensors, Sustainment
from MechFabrik.bauteile.items import ItemStatus
from MechFabrik.bauteile.items import BigItem, DurableItem, Item, ItemStatus, ItemTypes
from test_mech import AbstractTestMechAmor, INNER_ARMOR, NEXT_OUTER_ZONE, OUTER_ARMOR
from MechFabrik.bauteile import Area, AreaStatus, OuterAmor, StrikeEvent, CriticalStrikeEvent, ZoneNames
@@ -99,32 +98,55 @@ class TestMechAmor(AbstractTestMechAmor):
parent = Area()
area = Area()
area.parent = parent
cockpit = Cockpit()
area.cockpit = cockpit
big_item_01 = BigItem(ItemTypes.SUSTAINMENT, 5.0)
item_01 = Item(ItemTypes.SUSTAINMENT)
durable_item_01 = DurableItem(ItemTypes.SUSTAINMENT, 3)
area.items = {
(1, 1): Sustainment(),
(1, 2): Sensors(),
(1, 3): cockpit,
(1, 1): big_item_01,
(1, 2): durable_item_01,
(1, 3): durable_item_01,
(1, 4): None,
(1, 5): cockpit,
(1, 6): Sustainment(),
(1, 5): item_01,
(1, 6): None,
}
zone = OuterAmor(area)
event = CriticalStrikeEvent(zone, (1, 2)).process_event()
event = CriticalStrikeEvent(zone, (1, 1)).process_event()
self.assertEqual(AreaStatus.DAMAGED, zone.state)
self.assertEqual(AreaStatus.DAMAGED, area.state)
self.assertIsInstance(event, CriticalStrikeEvent)
self.assertFalse(event.is_empty())
self.assertEqual(area, event.area)
self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 2)].state)
self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 1)].state)
event = CriticalStrikeEvent(zone, (1, 5)).process_event()
self.assertEqual(AreaStatus.DAMAGED, zone.state)
self.assertEqual(AreaStatus.DAMAGED, area.state)
self.assertIsInstance(event, CriticalStrikeEvent)
self.assertFalse(event.is_empty())
self.assertEqual(area, event.area)
self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 5)].state)
event = CriticalStrikeEvent(zone, (1, 2)).process_event()
self.assertIsInstance(event, CriticalStrikeEvent)
self.assertFalse(event.is_empty())
self.assertEqual(area, event.area)
self.assertEqual(ItemStatus.DAMAGED, area.items[(1, 2)].state)
self.assertEqual(ItemStatus.DAMAGED, area.items[(1, 3)].state)
event = CriticalStrikeEvent(zone, (1, 3)).process_event()
self.assertIsInstance(event, CriticalStrikeEvent)
self.assertFalse(event.is_empty())
self.assertEqual(area, event.area)
self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 3)].state)
self.assertEqual(ItemStatus.DAMAGED, area.items[(1, 2)].state)
self.assertEqual(ItemStatus.DAMAGED, area.items[(1, 3)].state)
event = CriticalStrikeEvent(zone, (1, 2)).process_event()
self.assertIsInstance(event, CriticalStrikeEvent)
self.assertFalse(event.is_empty())
self.assertEqual(area, event.area)
self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 2)].state)
self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 5)].state)
event = CriticalStrikeEvent(zone, (1, 4)).process_event()