A comprehensive Python library for the Attack on Titan universe. Features a complete offline data API, a physics engine for game development, and productivity-focused CLI utilities.
Project description
🪽 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aot_toolkit-0.1.0.tar.gz.
File metadata
- Download URL: aot_toolkit-0.1.0.tar.gz
- Upload date:
- Size: 30.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3818811431d9fe8defe1e3f952fa89c40a042cd0b9fc6ff21ef4e3924dac0a8
|
|
| MD5 |
1388c0e01f0395f37e5d34b99cf87381
|
|
| BLAKE2b-256 |
f1deea78bcbb9a8eb7a1169bac2ba90b4e5c11954bb65232410f740286f6d261
|
Provenance
The following attestation bundles were made for aot_toolkit-0.1.0.tar.gz:
Publisher:
publish-to-pypi.yml on subhobhai943/aot-toolkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aot_toolkit-0.1.0.tar.gz -
Subject digest:
d3818811431d9fe8defe1e3f952fa89c40a042cd0b9fc6ff21ef4e3924dac0a8 - Sigstore transparency entry: 1306029692
- Sigstore integration time:
-
Permalink:
subhobhai943/aot-toolkit@7cc16b0f65cd8b59e56e96f096e962c8a9f3d87e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/subhobhai943
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@7cc16b0f65cd8b59e56e96f096e962c8a9f3d87e -
Trigger Event:
push
-
Statement type:
File details
Details for the file aot_toolkit-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aot_toolkit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 30.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7565f38278ab8b9d3ef7112e6f2a3e00a8447c1d17a96cfcfd6c6e212a51e121
|
|
| MD5 |
8e02ad33d2b1a229774e074d301c614c
|
|
| BLAKE2b-256 |
c8a28e904dbdcfc3fc65cd80ecc209884fdfafdd3d0587a439bf43cd9e8c9fa0
|
Provenance
The following attestation bundles were made for aot_toolkit-0.1.0-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on subhobhai943/aot-toolkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aot_toolkit-0.1.0-py3-none-any.whl -
Subject digest:
7565f38278ab8b9d3ef7112e6f2a3e00a8447c1d17a96cfcfd6c6e212a51e121 - Sigstore transparency entry: 1306029800
- Sigstore integration time:
-
Permalink:
subhobhai943/aot-toolkit@7cc16b0f65cd8b59e56e96f096e962c8a9f3d87e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/subhobhai943
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@7cc16b0f65cd8b59e56e96f096e962c8a9f3d87e -
Trigger Event:
push
-
Statement type: