# DFTTK DFTTK is a browser-based Delta Force weapon combat calculator. It has no AI-model or backend dependency. AI entry points: - Rules and tool contract: https://dfttk.com/ai/context.json - Interactive calculator: https://dfttk.com/ai/calculator - Current v3 data manifest: https://dfttk.com/data/v3/manifest.json Weapon combat data rule: - Read manifest.weaponPacks[weaponId].combat only. - The loaded document must have kind="weaponCombatRuntimePack" and the requested weaponId. - Never read or expose weaponPacks[weaponId].build or weaponPacks[weaponId].sharedBuild for combat analysis. - Firefight custom weapons are browser-local userCustom pairs, not v3 manifest weapons. Use listCustomWeapons(), getCustomData(), and calculate({ sourceType: "userCustom", customPairId, ...scenario }). - Custom weapons use their saved final values and paired ammo through the shared combat simulator. They do not load selection, combat, build, or sharedBuild weapon packs. Open /ai/calculator in a browser and call window.DFTTK_AI.searchWeapons(), listCustomWeapons(), getCombatData(), getCustomData(), getOptions(), calculate(), or compare(). Results are rendered on the same page and shareable through its URL. Use getOptions(input) to discover valid ammo, armor, slots, tunes, and fire modes. Re-query after loadout changes. See context.json for parameter defaults, limits, examples, and partial-result semantics. compare(payload, { signal, onProgress }) runs simulation in a Web Worker. Use AbortController to cancel that call. A partial conditional mean must not be presented as a complete result.