Skip to main content

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

PyPI version License: MIT Python 3.10+

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:

  1. Fetch and print a random quote.
  2. Run a quick ODM grapple simulation and print gas usage.
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aot_toolkit-0.1.0.tar.gz (30.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aot_toolkit-0.1.0-py3-none-any.whl (30.4 kB view details)

Uploaded Python 3

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

Hashes for aot_toolkit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d3818811431d9fe8defe1e3f952fa89c40a042cd0b9fc6ff21ef4e3924dac0a8
MD5 1388c0e01f0395f37e5d34b99cf87381
BLAKE2b-256 f1deea78bcbb9a8eb7a1169bac2ba90b4e5c11954bb65232410f740286f6d261

See more details on using hashes here.

Provenance

The following attestation bundles were made for aot_toolkit-0.1.0.tar.gz:

Publisher: publish-to-pypi.yml on subhobhai943/aot-toolkit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for aot_toolkit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7565f38278ab8b9d3ef7112e6f2a3e00a8447c1d17a96cfcfd6c6e212a51e121
MD5 8e02ad33d2b1a229774e074d301c614c
BLAKE2b-256 c8a28e904dbdcfc3fc65cd80ecc209884fdfafdd3d0587a439bf43cd9e8c9fa0

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page