🪽 AOT-Toolkit — Offline Attack on Titan Python Toolkit
AOT-Toolkit is a production-ready Python package for Attack on Titan fans and developers who want:
- 🧠 Offline lore access (characters, titans, quotes) with no API dependency.
- 🗡️ ODM and combat simulation primitives for games, experiments, and CLI storytelling.
- 🖥️ A rich terminal UX with side-by-side themed rendering and instant battle simulation.
✨ Highlights
- Zero-network data access via local JSON datasets.
- Fuzzy lookup support for character and titan names.
- ODM gear model with gas consumption and blade durability logic.
- Combat narrative engine that generates cinematic encounter reports.
- CLI commands for system+lore fetches and direct battle simulation.
📦 Installation
pip install AOT-Toolkit
🖥️ CLI Usage
After installation, the aot command is available globally.
aot fetch
Displays a polished side-by-side output featuring:
- Wings of Freedom ASCII art
- System information (OS/kernel/CPU/RAM/uptime)
- Scout rank estimation
- Random quote from the offline database
aot fetch
aot battle [char_name] [titan_name]
Runs the combat simulator directly from your terminal and prints a styled battle report.
aot battle "Levi Ackerman" "Beast Titan"
You can also use fuzzy names:
aot battle Levi Armored
🐍 Python API Usage
1) Database access (offline lore queries)
from aot.core.database import AoTDatabase
db = AoTDatabase()
levi = db.get_character("Levi")
beast = db.get_titan("Beast")
quote = db.get_random_quote(tag="motivational")
print(levi["full_name"])
print(beast["name"], beast["special_abilities"])
print(f"{quote['character_name']}: {quote['quote_text']}")
2) Engine usage (ODM + combat)
from aot.core.database import AoTDatabase
from aot.engine.combat import CombatSimulator
from aot.engine.odm_gear import ODMGear
# ODM simulation
gear = ODMGear(gas_capacity=100.0, blade_durability=100)
print(gear.grapple(distance_m=90.0, speed="fast"))
# Hardened armor affects blade durability significantly
strike = gear.attack_nape(
titan_armor_level=4,
titan_abilities=["hardened_armor", "high_endurance"],
)
print(strike)
# Combat narrative simulation
db = AoTDatabase()
simulator = CombatSimulator(db)
report = simulator.simulate_encounter("Mikasa Ackerman", "War Hammer Titan")
print(report)
🎬 Showcase Demo
A complete demonstration script is provided:
python examples/demo.py
The demo will:
- Fetch and print a random quote.
- Run a quick ODM grapple simulation and print gas usage.
- Simulate Levi Ackerman vs Beast Titan and print the narrative result.
🧱 Project Structure
.
├── aot/
│ ├── cli/ # Rich-powered terminal commands
│ ├── core/ # Offline database and exceptions
│ ├── data/ # Characters, titans, quotes JSON datasets
│ └── engine/ # ODM gear + combat simulation
├── examples/
│ └── demo.py # End-to-end showcase script
├── tests/
├── .github/workflows/
│ └── publish-to-pypi.yml
├── pyproject.toml
└── README.md
🚀 Release & Publishing
The repository includes an automated GitHub Actions workflow to:
- Build source/wheel distributions on version tags (
v*) - Publish to TestPyPI
- Publish to PyPI on tag push
See: .github/workflows/publish-to-pypi.yml
🤝 Contributing
Contributions are welcome. If you submit PRs, please include:
- Unit tests for new behavior
- Clear docstrings and type hints
- Updated README snippets for public-facing API changes
📄 License
Distributed under the MIT License. See LICENSE.
Metadata
Release files for aot-toolkit 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aot_toolkit-0.1.0.tar.gz | 30.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aot_toolkit-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 60.5 kB
Release files / aot_toolkit-0.1.0.tar.gz
| Download URL | aot_toolkit-0.1.0.tar.gz |
|---|---|
| Size | 30.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d3818811431d9fe8defe1e3f952fa89c40a042cd0b9fc6ff21ef4e3924dac0a8
|
|
BLAKE2b-256 checksum How to use checksums |
f1deea78bcbb9a8eb7a1169bac2ba90b4e5c11954bb65232410f740286f6d261
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 15, 2026.
Transparency logRelease files / aot_toolkit-0.1.0-py3-none-any.whl
| Download URL | aot_toolkit-0.1.0-py3-none-any.whl |
|---|---|
| Size | 30.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7565f38278ab8b9d3ef7112e6f2a3e00a8447c1d17a96cfcfd6c6e212a51e121
|
|
BLAKE2b-256 checksum How to use checksums |
c8a28e904dbdcfc3fc65cd80ecc209884fdfafdd3d0587a439bf43cd9e8c9fa0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 15, 2026.
Transparency log