From abcde9e8e4a6e0fbbecaf4f558756956537e8086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20L=C3=BCcke?= Date: Fri, 5 Dec 2025 16:01:08 +0100 Subject: [PATCH] Feature: check for *Area*-Status --- MechFabrik/Uml/StrikeProcess.puml | 39 +++++++++++++++++++++++++++++++ MechFabrik/bauteile/__init__.py | 12 +++++++--- 2 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 MechFabrik/Uml/StrikeProcess.puml diff --git a/MechFabrik/Uml/StrikeProcess.puml b/MechFabrik/Uml/StrikeProcess.puml new file mode 100644 index 0000000..c035348 --- /dev/null +++ b/MechFabrik/Uml/StrikeProcess.puml @@ -0,0 +1,39 @@ +@startuml +'https://plantuml.com/activity-diagram-beta + +start + +:eine //Zone// wird getroffen; + +:Trefferpunkte; <> + +if (die //Zone// hat noch äußere Panzerung?) then (Ja) + :äußere Panzerung abtragen; <> + :Trefferpunkte verringern; <> + :äußere Treffer triggern; <> +endif + +if (sind noch Trefferpunkte übrig?) then (Ja) + if (die //Zone// hat noch innere Panzerung?) then (Ja) + :restliche Treffer nach innen leiten; <> + :innere Panzerung abtragen; <> + :inneren Treffer triggern; <> + :Trefferpunkte verringern; <> + if (sind noch Trefferpunkte übrig?) then (Ja) + :die //Zone// ist zerstört; <> + :restliche Trefferpunkte zur //Eltern-Zone// leiten; <> + end + else (Nein) + end + endif + else (Nein) + :die //Zone// ist zerstört; <> + :restliche Trefferpunkte zur //Eltern-Zone// leiten; <> + end + endif +endif + + +end + +@enduml diff --git a/MechFabrik/bauteile/__init__.py b/MechFabrik/bauteile/__init__.py index 3dcd6e3..4036d17 100755 --- a/MechFabrik/bauteile/__init__.py +++ b/MechFabrik/bauteile/__init__.py @@ -90,9 +90,11 @@ class Area: def __init__(self): self.__dict__['_content'] = { - 'children': [], - 'items': {}, - 'armor': 0, + 'children': [], + 'items': {}, + 'armor': 0, + 'inner_armor': 0, + 'state': AreaStatus.FINE, } def __setattr__(self, key, value): @@ -170,3 +172,7 @@ class Mech(object): if area.inner_armor > hits_rest: area.inner_armor -= hits_rest area.armor = 0 + area.state = AreaStatus.CRITICAL_STRIKE + else: + area.state = AreaStatus.DESTROYED + area.inner_armor = 0