FeNigma/src/fenigma/shells.py
Dominik Roth 7ecda4ea3b Rename package/app to FeNigma consistently
- src/ironnest_assist/ -> src/fenigma/
- run.sh invokes -m fenigma.app
- APP_ID: eu.dominik-roth.IronNestAssist -> eu.dominik-roth.FeNigma
- window title, IronNestApp class -> FeNigmaApp
- __init__.py docstring, README pgrep hint updated

IRON NEST (the game's own name, e.g. NEST_KEYWORD in ocr.py) is left
untouched, only our own project/app naming changed. Verified: clean
import under the new module path, install.sh still builds the venv
correctly, and the OCR regression sweep (9 known screenshots) still
passes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 20:20:43 +02:00

35 lines
2.0 KiB
Python

"""Shell (ammunition) types and their known properties.
From High Command's field reference. Blast radius is None where unknown —
5 of 12 shells (42%) are "standard" (available without special unlock/
research), and all three shells with a known blast radius are standard
ones; the rest are still unmeasured. Feeds into the firing-solution
calculator later (ordnance choice affects what's needed to make a shot
count, e.g. AP required for underground supply caches per the typewriter).
"""
from __future__ import annotations
from enum import Enum
class Shell(Enum):
# description blast_radius_km standard
AP = ("Armor-piercing", 0.05, True)
HE = ("High-explosive fragmentation", 0.25, True)
HCHE = ("High-capacity bursting charge", 0.50, True)
STAR = ("Illumination star", None, True)
SMK = ("White phosphorus smoke", None, True)
MSTD = ("Mustard (YX) blister agent", None, False)
TEAR = ("Lachrymatory (CN) irritant", None, False)
PRPG = ("Agitation leaflet propaganda", None, False)
PHGN = ("Phosgene (CG) choking gas", None, False)
INCN = ("Thermite incendiary", None, False)
ATMC = ("Experimental uranium nucleus-splitting annihilation", None, False)
CLMN = ("Cluster mine dispersal", None, False)
def __init__(self, description: str, blast_radius_km: float | None, standard: bool) -> None:
self.description = description
self.blast_radius_km = blast_radius_km # None = not yet measured
self.standard = standard # available without a special unlock/research