{"id":35873834,"url":"https://github.com/zfael/dota2-scripts","last_synced_at":"2026-04-15T00:05:05.483Z","repository":{"id":327277024,"uuid":"1108625346","full_name":"zfael/dota2-scripts","owner":"zfael","description":"Set of scripts for Dota 2 automation on top of Game State Integration Events","archived":false,"fork":false,"pushed_at":"2026-04-03T21:47:10.000Z","size":1047,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T23:26:55.702Z","etag":null,"topics":["automation","dota2","game-state-integration","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zfael.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-02T17:41:56.000Z","updated_at":"2026-04-03T21:47:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"57e444c1-b835-4cdc-892b-a0d803ff1862","html_url":"https://github.com/zfael/dota2-scripts","commit_stats":null,"previous_names":["zfael/dota2-scripts"],"tags_count":56,"template":false,"template_full_name":null,"purl":"pkg:github/zfael/dota2-scripts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zfael%2Fdota2-scripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zfael%2Fdota2-scripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zfael%2Fdota2-scripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zfael%2Fdota2-scripts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zfael","download_url":"https://codeload.github.com/zfael/dota2-scripts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zfael%2Fdota2-scripts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31820370,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","dota2","game-state-integration","rust"],"created_at":"2026-01-08T16:07:47.462Z","updated_at":"2026-04-15T00:05:05.461Z","avatar_url":"https://github.com/zfael.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dota 2 Script Automation\n\nWindows-focused Rust automation tooling for Dota 2.\n\nThe app combines:\n\n- GSI-driven automation from live game state\n- global keyboard and mouse interception for combo helpers\n- an `egui` desktop UI for status, settings, and updates\n\n## Supported heroes\n\n- Broodmother\n- Huskar\n- Largo\n- Legion Commander\n- Outworld Destroyer\n- Shadow Fiend\n- Tiny\n\nHero-specific behavior lives under `src/actions/heroes/`, with matching docs in `docs/heroes/`.\n\n## Current feature set\n\n- Shared survivability automation for healing, defensive items, neutral items, and silence dispels\n- Danger detection from HP-loss heuristics\n- Soul Ring pre-cast automation for eligible ability/item keys\n- Hero-specific combo or interception flows:\n  - Huskar armlet + Berserker Blood handling\n  - Largo Amphibian Rhapsody beat timing and song control\n  - Legion Commander standalone combo\n  - Outworld Destroyer danger-triggered barrier, ultimate interception, self-Astral helper, and standalone combo\n  - Shadow Fiend raze/ultimate interception plus standalone combo\n  - Tiny standalone combo\n  - Broodmother spider micro and Space+right-click auto-items/abilities\n- Startup update checks via GitHub Releases\n\n## Requirements\n\n- Windows 10/11\n- Rust toolchain\n- Dota 2 with Game State Integration enabled\n- Administrator privileges recommended for reliable global input interception\n\n## Quick start\n\n1. Clone the repo and build:\n\n```powershell\ngit clone https://github.com/yourusername/dota2-scripts.git\ncd dota2-scripts\ncargo build --release\n```\n\n2. Create a Dota 2 GSI config file at:\n\n```text\nsteamapps/common/dota 2 beta/game/dota/cfg/gamestate_integration/gamestate_integration_dota2scripts.cfg\n```\n\n3. Point Dota at the local server. The default checked-in port is `3000`, but if you change `[server].port` in `%LOCALAPPDATA%\\dota2-scripts\\config\\config.toml`, update the URI to match:\n\n```text\n\"Dota 2 Integration Configuration\"\n{\n    \"uri\"               \"http://127.0.0.1:3000/\"\n    \"timeout\"           \"5.0\"\n    \"buffer\"            \"0.1\"\n    \"throttle\"          \"0.1\"\n    \"heartbeat\"         \"30.0\"\n    \"data\"\n    {\n        \"provider\"      \"1\"\n        \"map\"           \"1\"\n        \"player\"        \"1\"\n        \"hero\"          \"1\"\n        \"abilities\"     \"1\"\n        \"items\"         \"1\"\n    }\n}\n```\n\n4. Run the app:\n\n```powershell\ncargo run --release\n```\n\nFor verbose logs in PowerShell:\n\n```powershell\n$env:RUST_LOG=\"debug\"; cargo run --release\n```\n\n## Configuration\n\nLive runtime settings now live at `%LOCALAPPDATA%\\dota2-scripts\\config\\config.toml`.\n\nStartup bootstraps that file automatically:\n\n- if an older install-local `config\\config.toml` exists next to the executable, it is imported into LocalAppData on first launch\n- otherwise the app seeds LocalAppData from the checked-in `config/config.toml` template embedded into the binary\n\nThe checked-in `config/config.toml` remains the source template for development, packaging, and release assets.\n\nThe current checked-in config surface includes:\n\n- `[server]`\n- `[updates]`\n- `[keybindings]`\n- `[logging]`\n- `[common]`\n- `[danger_detection]`\n- `[neutral_items]`\n- `[gsi_logging]`\n- `[soul_ring]`\n- `[heroes.huskar]`\n- `[heroes.legion_commander]`\n- `[heroes.shadow_fiend]`\n- `[heroes.tiny]`\n- `[heroes.outworld_destroyer]`\n- `[heroes.largo]`\n- `[heroes.broodmother]`\n\nFor exact fields, checked-in values, fallback defaults, and known runtime drift, use `docs/reference/configuration.md`.\n\n## Updates\n\n- GitHub Releases still publish both a manual **ZIP** and an **MSI** installer.\n- The app now treats the **MSI** as the only supported in-app update artifact.\n- When you accept an update in-app, it downloads the latest MSI plus a matching `config.template.toml`, merges the new template into your LocalAppData config with **local values winning**, preserves local-only keys, runs a silent upgrade, and relaunches automatically.\n- Older ZIP-style installs are expected to install the MSI once before using in-app updates.\n\n## Using the UI\n\nThe app exposes:\n\n- current hero/event status from the latest GSI payload\n- manual hero override for `HeroType`-based heroes\n- standalone trigger display for the currently selected hero\n- GSI and standalone enable toggles\n- update banner and settings\n- queue/event metrics for debugging\n\n## Development and verification\n\nNormal repo checks:\n\n```powershell\ncargo test\ncargo build --release\n$env:RUST_LOG=\"debug\"; cargo run --release\n```\n\nCurrent tests include:\n\n- fixture-backed deserialization checks in `tests/gsi_handler_tests.rs`\n- JSON fixtures in `tests/fixtures/`\n- a small unit test in `src/actions/soul_ring.rs`\n\n## Documentation map\n\n- `AGENTS.md` — canonical navigation hub for contributors and AI agents\n- `docs/architecture/overview.md` — system map and entry points\n- `docs/reference/configuration.md` — config reference and fallback defaults\n- `docs/reference/gsi-schema-and-usage.md` — consumed GSI fields and where they flow\n- `docs/workflows/testing-and-debugging.md` — tests, logs, fixtures, runtime checks\n- `docs/workflows/adding-a-hero.md` — end-to-end hero addition checklist\n- `docs/reference/file-index.md` — file-to-purpose index for the repo\n\n## License\n\nMIT\n\n## Disclaimer\n\nThis tool is for educational purposes. Use it responsibly and ensure compliance with Dota 2 and Steam terms of service.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzfael%2Fdota2-scripts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzfael%2Fdota2-scripts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzfael%2Fdota2-scripts/lists"}