MCPcopy Index your code
hub / github.com/Mijago/D2ArmorPicker

github.com/Mijago/D2ArmorPicker @v2.9.6

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.9.6 ↗ · + Follow
660 symbols 1,227 edges 107 files 37 documented · 6%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

D2ArmorPicker

All Contributors

D2ArmorPicker is a small tool to min-max your armor stats with only a few clicks. Visit the page here: https://d2armorpicker.com

About this project

D2ArmorPicker is a powerful web-based tool designed for Destiny 2 players who want to optimize their armor sets for maximum efficiency and performance. Whether you're a casual player or a hardcore speedrunner, D2ArmorPicker helps you find the best possible combinations of armor pieces, mods, and stat distributions to suit your playstyle and goals.

Key Features:

  • Utilises Bungie API: Connects to your Destiny 2 account via the Bungie API to automatically load your available armor pieces.
  • Stat Optimization: Calculates and suggests the best armor combinations to maximize your desired stats (Resilience, Recovery, Discipline, etc.).
  • Mod & Artifice Support: Allows you to include stat mods (minor, major, artifice) in the optimization process for even more precise builds.
  • Highly Detailed User Preferences: Customize your stat priorities, lock specific armor pieces, and filter by perks or other criteria.

Contribution

Development

  1. Run npx husky-init && npm install to install dependencies.
  2. Duplicate the .env_example to .env_dev.
  3. Create a Bungie API key. For this, head over to https://www.bungie.net/en/Application and create a new application.
  4. Set the OAuth Client Type to Confidential and the redirect URL to https://localhost:4200/.
  5. Select the Scopes Read your Destiny 2 information and Move or equip Destiny gear and other items.
  6. Set Origin Header to https://localhost:4200.
  7. Copy the API key and paste it to D2AP_BUNGIE_API_KEY in the .env_dev file.
  8. Copy the OAuth client_id and paste it to D2AP_BUNGIE_CLIENT_ID in the .env_dev file.
  9. Copy the OAuth client_secrety and paste it to D2AP_BUNGIE_CLIENT_SECRET in the .env_dev file.
  10. Start the development server with npm start (or npm run start). The server will be available at https://localhost:4200/. This page will automatically update whenever you change anything in the code.
  11. Ignore the "invalid certificate" error your browser will show you. You need HTTPS to be able to use the Bungie Authentification.

Building Production and Beta packages

  • Copy .env_dev to .env and/or .env_beta.
  • To build a production package, set the environment flag PRODUCTION=1.
  • To build a beta package, set the environment flag BETA=1.

Then you can use npm run build.

Deployment

You can also deploy the page to a "github pages" page. Please note that I strongly discourage hosting alternative D2AP installations, let's make this one as awesome as possible.

  1. Set the environment flag BETA=1 or PRODUCTION=1.
  2. Modify the deploy script in package.json and remove--base-href=/ --cname=d2armorpicker.com. The same for the beta command. If you deploy to yourname.github.io/fancyrepo, then you may have to set --base-href=/fancyrepo.
  3. npm run deploy (given you forked the repository first).

Guidelines

  • We use husky to execute some commit hooks.
  • We use eslint to make sure we have the same code style.
  • We use prettier to make sure we have the same code formatting.
  • We are using commitlint to make sure we all have the same commit structure. The template used is @commitlint/config-angular.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Mijago Mijago 💻 🤔 🚇 ⚠️ 📖 🚧 📆 📓 👀 TheYeshir TheYeshir 📆 🤔 👀 📓 💬 Mojo Mojo 📆 🤔 📓 💬 💻 Ben Hollis Ben Hollis 💻 nznaza nznaza 🚧 💻 Ciarán Walsh Ciarán Walsh 💻 🚧 Slavi Stoev Slavi Stoev 🔣
Add your contributions

This project follows the all-contributors specification. Contributions of any kind welcome!

License

Copyright (c) Mijago 2023.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Extension points exported contracts — how you extend this code

ConfirmDialogData (Interface)
(no doc)
src/app/components/authenticated-v2/components/confirm-dialog/confirm-dialog.component.ts
GearSetBonus (Interface)
(no doc)
src/app/components/authenticated-v2/settings/desired-mod-limit-selection/gearset-selection/gearset-selection.component.ts
GearSet (Interface)
(no doc)
src/app/components/authenticated-v2/settings/desired-mod-limit-selection/gearset-selection/gearset-selection.component.ts
SlotInformation (Interface)
(no doc)
src/app/components/authenticated-v2/settings/desired-mod-limit-selection/modslot-visualization/modslot-visualization.component.ts
AdvancedSettingFieldBase (Interface)
(no doc)
src/app/components/authenticated-v2/settings/advanced-settings/advanced-settings.component.ts

Core symbols most depended-on inside this repo

modifyConfiguration
called by 48
src/app/services/configuration.service.ts
modifyStatus
called by 20
src/app/services/status-provider.service.ts
get
called by 19
src/app/services/character-stats.service.ts
$http
called by 17
src/app/services/http-client.service.ts
setAuthError
called by 13
src/app/services/status-provider.service.ts
getStatus
called by 12
src/app/services/status-provider.service.ts
clearApiError
called by 12
src/app/services/status-provider.service.ts
getMembershipDataForCurrentUser
called by 10
src/app/services/membership.service.ts

Shape

Method 415
Class 142
Function 46
Interface 42
Enum 15

Languages

TypeScript100%
Python1%

Modules by API surface

src/app/components/authenticated-v2/results/results-card-view/results-card-view.component.ts40 symbols
src/app/services/bungie-api.service.ts28 symbols
src/app/components/authenticated-v2/settings/desired-stat-selection/stat-tier-selection/stat-tier-selection.component.ts21 symbols
src/app/components/authenticated-v2/settings/desired-exotic-selection/desired-exotic-selection.component.ts21 symbols
src/app/services/configuration.service.ts19 symbols
src/app/services/inventory.service.ts18 symbols
src/app/services/auth.service.ts16 symbols
src/app/components/authenticated-v2/results/expanded-result-content/expanded-result-content.component.ts16 symbols
src/app/services/results-builder.worker.ts15 symbols
src/app/components/authenticated-v2/settings/desired-mod-limit-selection/gearset-selection/gearset-selection.component.ts15 symbols
src/app/components/authenticated-v2/results/results.component.ts14 symbols
src/app/components/authenticated-v2/settings/load-and-save-settings/load-and-save-settings.component.ts13 symbols

For agents

$ claude mcp add D2ArmorPicker \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact