├── .editorconfig ├── .eslintrc ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ └── operator.yml └── workflows │ ├── build.yml │ ├── codeql-analysis.yml │ └── publish.yml ├── .gitignore ├── .husky ├── .gitignore └── pre-commit ├── .prettierrc ├── .vscode └── extensions.json ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── jest.config.ts ├── operators ├── ace │ ├── ace.svg │ └── index.ts ├── alibi │ ├── alibi.svg │ └── index.ts ├── amaru │ ├── amaru.svg │ └── index.ts ├── aruni │ ├── aruni.svg │ └── index.ts ├── ash │ ├── ash.svg │ └── index.ts ├── azami │ ├── azami.svg │ └── index.ts ├── bandit │ ├── bandit.svg │ └── index.ts ├── blackbeard │ ├── blackbeard.svg │ └── index.ts ├── blitz │ ├── blitz.svg │ └── index.ts ├── brava │ ├── brava.svg │ └── index.ts ├── buck │ ├── buck.svg │ └── index.ts ├── capitao │ ├── capitao.svg │ └── index.ts ├── castle │ ├── castle.svg │ └── index.ts ├── caveira │ ├── caveira.svg │ └── index.ts ├── clash │ ├── clash.svg │ └── index.ts ├── deimos │ ├── deimos.svg │ └── index.ts ├── doc │ ├── doc.svg │ └── index.ts ├── dokkaebi │ ├── dokkaebi.svg │ └── index.ts ├── echo │ ├── echo.svg │ └── index.ts ├── ela │ ├── ela.svg │ └── index.ts ├── fenrir │ ├── fenrir.svg │ └── index.ts ├── finka │ ├── finka.svg │ └── index.ts ├── flores │ ├── flores.svg │ └── index.ts ├── frost │ ├── frost.svg │ └── index.ts ├── fuze │ ├── fuze.svg │ └── index.ts ├── glaz │ ├── glaz.svg │ └── index.ts ├── goyo │ ├── goyo.svg │ └── index.ts ├── gridlock │ ├── gridlock.svg │ └── index.ts ├── grim │ ├── grim.svg │ └── index.ts ├── hibana │ ├── hibana.svg │ └── index.ts ├── iana │ ├── iana.svg │ └── index.ts ├── index.ts ├── iq │ ├── index.ts │ └── iq.svg ├── jackal │ ├── index.ts │ └── jackal.svg ├── jager │ ├── index.ts │ └── jager.svg ├── kaid │ ├── index.ts │ └── kaid.svg ├── kali │ ├── index.ts │ └── kali.svg ├── kapkan │ ├── index.ts │ └── kapkan.svg ├── lesion │ ├── index.ts │ └── lesion.svg ├── lion │ ├── index.ts │ └── lion.svg ├── maestro │ ├── index.ts │ └── maestro.svg ├── maverick │ ├── index.ts │ └── maverick.svg ├── melusi │ ├── index.ts │ └── melusi.svg ├── mira │ ├── index.ts │ └── mira.svg ├── montagne │ ├── index.ts │ └── montagne.svg ├── mozzie │ ├── index.ts │ └── mozzie.svg ├── mute │ ├── index.ts │ └── mute.svg ├── nokk │ ├── index.ts │ └── nokk.svg ├── nomad │ ├── index.ts │ └── nomad.svg ├── oryx │ ├── index.ts │ └── oryx.svg ├── osa │ ├── index.ts │ └── osa.svg ├── pulse │ ├── index.ts │ └── pulse.svg ├── ram │ ├── index.ts │ └── ram.svg ├── rauora │ ├── index.ts │ └── rauora.svg ├── recruit_blue │ ├── index.ts │ └── recruit_blue.svg ├── recruit_green │ ├── index.ts │ └── recruit_green.svg ├── recruit_orange │ ├── index.ts │ └── recruit_orange.svg ├── recruit_red │ ├── index.ts │ └── recruit_red.svg ├── recruit_yellow │ ├── index.ts │ └── recruit_yellow.svg ├── rook │ ├── index.ts │ └── rook.svg ├── sens │ ├── index.ts │ └── sens.svg ├── sentry │ ├── index.ts │ └── sentry.svg ├── skopos │ ├── index.ts │ └── skopos.svg ├── sledge │ ├── index.ts │ └── sledge.svg ├── smoke │ ├── index.ts │ └── smoke.svg ├── solis │ ├── index.ts │ └── solis.svg ├── striker │ ├── index.ts │ └── striker.svg ├── tachanka │ ├── index.ts │ └── tachanka.svg ├── thatcher │ ├── index.ts │ └── thatcher.svg ├── thermite │ ├── index.ts │ └── thermite.svg ├── thorn │ ├── index.ts │ └── thorn.svg ├── thunderbird │ ├── index.ts │ └── thunderbird.svg ├── tubarao │ ├── index.ts │ └── tubarao.svg ├── twitch │ ├── index.ts │ └── twitch.svg ├── valkyrie │ ├── index.ts │ └── valkyrie.svg ├── vigil │ ├── index.ts │ └── vigil.svg ├── wamai │ ├── index.ts │ └── wamai.svg ├── warden │ ├── index.ts │ └── warden.svg ├── ying │ ├── index.ts │ └── ying.svg ├── zero │ ├── index.ts │ └── zero.svg └── zofia │ ├── index.ts │ └── zofia.svg ├── package-lock.json ├── package.json ├── scripts ├── build-icon-modules.ts ├── build-optimized-svg.ts ├── build-rollup.ts ├── build.ts ├── clean.ts ├── config.ts └── util │ ├── copy-dir.ts │ └── index.ts ├── src ├── _tests_ │ ├── __snapshots__ │ │ └── functions.test.ts.snap │ ├── functions.test.ts │ └── index.test.ts ├── functions.ts ├── index.ts ├── template.ai └── types │ └── operator.d.ts └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "plugins": ["@typescript-eslint"], 5 | "extends": [ 6 | "eslint:recommended", 7 | "plugin:@typescript-eslint/recommended", 8 | "plugin:unicorn/recommended", 9 | "prettier" 10 | ], 11 | "rules": { 12 | "unicorn/prefer-node-protocol": "off", 13 | "unicorn/prefer-module": "off", 14 | "unicorn/prevent-abbreviations": "off", 15 | "unicorn/numeric-separators-style": "off" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | ko_fi: marcopixel 2 | custom: ["https://www.paypal.me/vockner"] 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/operator.yml: -------------------------------------------------------------------------------- 1 | name: Operator 2 | description: Add an operator 3 | title: '[Operation OPERATION_NAME] OPERATOR_NAME' 4 | labels: ['enhancement'] 5 | body: 6 | - type: input 7 | id: name 8 | attributes: 9 | label: Name/Nickname 10 | description: 'Readable name of the operator.' 11 | placeholder: 'ex: Sledge, Jäger' 12 | validations: 13 | required: true 14 | - type: dropdown 15 | id: role 16 | attributes: 17 | label: Role 18 | description: 'Role of the operator.' 19 | options: 20 | - Attacker 21 | - Defender 22 | validations: 23 | required: true 24 | - type: input 25 | id: org 26 | attributes: 27 | label: Organization 28 | description: 'Operator organisation name.' 29 | placeholder: 'ex: FBI, SWAT' 30 | validations: 31 | required: true 32 | - type: input 33 | id: squad 34 | attributes: 35 | label: Squad 36 | description: 'Operator squad name.' 37 | placeholder: 'ex: Nighthaven' 38 | validations: 39 | required: true 40 | - type: dropdown 41 | id: speed 42 | attributes: 43 | label: Speed 44 | description: 'Speed rating.' 45 | options: 46 | - 1 47 | - 2 48 | - 3 49 | validations: 50 | required: true 51 | - type: dropdown 52 | id: health 53 | attributes: 54 | label: Health 55 | description: 'Health Rating.' 56 | options: 57 | - 1 58 | - 2 59 | - 3 60 | validations: 61 | required: true 62 | - type: dropdown 63 | id: difficulty 64 | attributes: 65 | label: Difficilty 66 | description: 'Difficulty rating.' 67 | options: 68 | - 1 69 | - 2 70 | - 3 71 | validations: 72 | required: true 73 | - type: dropdown 74 | id: gender 75 | attributes: 76 | label: Gender 77 | description: 'm - Male, f - Female, o - Other, n - None/Not applicable, u - Unknown.' 78 | options: 79 | - 'm' 80 | - 'f' 81 | - 'o' 82 | - 'n' 83 | - 'u' 84 | validations: 85 | required: true 86 | - type: input 87 | id: country 88 | attributes: 89 | label: Country 90 | description: 'Country of the operator as a ISO 3166-1 alpha-2 code (https://wikipedia.org/wiki/ISO_3166-1_alpha-2).' 91 | placeholder: 'ex: DE, SK' 92 | validations: 93 | required: true 94 | - type: input 95 | id: season 96 | attributes: 97 | label: Season 98 | description: 'Season shorthandle when the operator was first introduced to the game.' 99 | placeholder: 'ex: Y1S1' 100 | validations: 101 | required: true 102 | - type: input 103 | id: height 104 | attributes: 105 | label: Height 106 | description: 'Height of the operator, in cm.' 107 | placeholder: 'ex: 175' 108 | validations: 109 | required: true 110 | - type: input 111 | id: weight 112 | attributes: 113 | label: Weight 114 | description: 'Weight of the operator, in kg.' 115 | placeholder: 'ex: 75' 116 | validations: 117 | required: true 118 | - type: input 119 | id: real-name 120 | attributes: 121 | label: Real name 122 | description: 'Real name of the operator.' 123 | placeholder: 'Miles Campbell' 124 | validations: 125 | required: true 126 | - type: input 127 | id: birthplace 128 | attributes: 129 | label: Birthplace 130 | description: 'Birthplace of the operator, including the country.' 131 | placeholder: 'Sherman Oaks, U.S.A' 132 | validations: 133 | required: true 134 | # Can be add later 135 | # - type: input 136 | # id: date-of-birth 137 | # attributes: 138 | # label: Date of birth 139 | # description: 'Date of birth of the operator as a ISO 8601 (https://wikipedia.org/wiki/ISO_8601).' 140 | # placeholder: 'ex: 1968-07-12' 141 | # validations: 142 | # required: true 143 | - type: textarea 144 | id: icon 145 | attributes: 146 | label: Icon 147 | description: 'Highiest resolution of operator icon you could find, in-game lossless screenshot, asset packs.' 148 | value: | 149 |
150 | Expand 151 | 152 | 153 | Icon image goes here 154 | 155 | 156 |
157 | validations: 158 | required: true 159 | - type: textarea 160 | id: reference 161 | attributes: 162 | label: Reference 163 | description: 'Sources of information filled above. Screenshots, urls.' 164 | value: | 165 |
166 | Expand 167 | 168 | 169 | Media files goes here 170 | 171 | 172 |
173 | - type: textarea 174 | id: additional-information 175 | attributes: 176 | label: Additional Information 177 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Ubuntu CI 2 | 3 | on: 4 | push: 5 | branches: [master] 6 | pull_request: 7 | branches: [master] 8 | 9 | jobs: 10 | build: 11 | name: Build & Test 12 | runs-on: ubuntu-latest 13 | strategy: 14 | matrix: 15 | node-version: [20.x] 16 | steps: 17 | - uses: actions/checkout@v2 18 | - name: Use Node.js ${{ matrix.node-version }} 19 | uses: actions/setup-node@v1 20 | with: 21 | node-version: ${{ matrix.node-version }} 22 | - run: npm ci 23 | - run: npm run build 24 | - run: npm run test 25 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # ******** NOTE ******** 12 | 13 | name: "CodeQL" 14 | 15 | on: 16 | push: 17 | branches: [master] 18 | pull_request: 19 | # The branches below must be a subset of the branches above 20 | branches: [master] 21 | schedule: 22 | - cron: "38 7 * * 2" 23 | 24 | jobs: 25 | analyze: 26 | name: Analyze 27 | runs-on: ubuntu-latest 28 | 29 | strategy: 30 | fail-fast: false 31 | matrix: 32 | language: ["javascript"] 33 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] 34 | # Learn more... 35 | # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection 36 | 37 | steps: 38 | - name: Checkout repository 39 | uses: actions/checkout@v2 40 | 41 | # Initializes the CodeQL tools for scanning. 42 | - name: Initialize CodeQL 43 | uses: github/codeql-action/init@v1 44 | with: 45 | languages: ${{ matrix.language }} 46 | # If you wish to specify custom queries, you can do so here or in a config file. 47 | # By default, queries listed here will override any specified in a config file. 48 | # Prefix the list here with "+" to use these queries and those in the config file. 49 | # queries: ./path/to/local/query, your-org/your-repo/queries@main 50 | 51 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 52 | # If this step fails, then you should remove it and run the build manually (see below) 53 | - name: Autobuild 54 | uses: github/codeql-action/autobuild@v1 55 | 56 | # ℹ️ Command-line programs to run using the OS shell. 57 | # 📚 https://git.io/JvXDl 58 | 59 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 60 | # and modify them (or add more) to build your code if your project 61 | # uses a compiled language 62 | 63 | #- run: | 64 | # make bootstrap 65 | # make release 66 | 67 | - name: Perform CodeQL Analysis 68 | uses: github/codeql-action/analyze@v1 69 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Ubuntu Package 2 | on: 3 | release: 4 | types: [published] 5 | jobs: 6 | publish-npm: 7 | name: Publish to NPM 8 | runs-on: ubuntu-latest 9 | strategy: 10 | matrix: 11 | node-version: [20.x] 12 | steps: 13 | - uses: actions/checkout@v2 14 | - name: Use Node.js ${{ matrix.node-version }} 15 | uses: actions/setup-node@v1 16 | with: 17 | node-version: ${{ matrix.node-version }} 18 | registry-url: "https://registry.npmjs.org" 19 | - name: Install & test 20 | run: | 21 | npm ci 22 | npm run build 23 | npm run test 24 | - run: npm publish 25 | env: 26 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/node,windows,visualstudiocode 3 | # Edit at https://www.gitignore.io/?templates=node,windows,visualstudiocode 4 | 5 | ### Node ### 6 | # Logs 7 | logs 8 | *.log 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | lerna-debug.log* 13 | 14 | # Diagnostic reports (https://nodejs.org/api/report.html) 15 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 16 | 17 | # Runtime data 18 | pids 19 | *.pid 20 | *.seed 21 | *.pid.lock 22 | 23 | # Directory for instrumented libs generated by jscoverage/JSCover 24 | lib-cov 25 | 26 | # Coverage directory used by tools like istanbul 27 | coverage 28 | *.lcov 29 | 30 | # nyc test coverage 31 | .nyc_output 32 | 33 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 34 | .grunt 35 | 36 | # Bower dependency directory (https://bower.io/) 37 | bower_components 38 | 39 | # node-waf configuration 40 | .lock-wscript 41 | 42 | # Compiled binary addons (https://nodejs.org/api/addons.html) 43 | build/Release 44 | 45 | # Dependency directories 46 | node_modules/ 47 | jspm_packages/ 48 | 49 | # TypeScript v1 declaration files 50 | typings/ 51 | 52 | # TypeScript cache 53 | *.tsbuildinfo 54 | 55 | # Optional npm cache directory 56 | .npm 57 | 58 | # Optional eslint cache 59 | .eslintcache 60 | 61 | # Optional REPL history 62 | .node_repl_history 63 | 64 | # Output of 'npm pack' 65 | *.tgz 66 | 67 | # Yarn Integrity file 68 | .yarn-integrity 69 | 70 | # dotenv environment variables file 71 | .env 72 | .env.test 73 | 74 | # parcel-bundler cache (https://parceljs.org/) 75 | .cache 76 | 77 | # next.js build output 78 | .next 79 | 80 | # nuxt.js build output 81 | .nuxt 82 | 83 | # rollup.js default build output 84 | dist/ 85 | 86 | # Uncomment the public line if your project uses Gatsby 87 | # https://nextjs.org/blog/next-9-1#public-directory-support 88 | # https://create-react-app.dev/docs/using-the-public-folder/#docsNav 89 | # public 90 | 91 | # Storybook build outputs 92 | .out 93 | .storybook-out 94 | 95 | # vuepress build output 96 | .vuepress/dist 97 | 98 | # Serverless directories 99 | .serverless/ 100 | 101 | # FuseBox cache 102 | .fusebox/ 103 | 104 | # DynamoDB Local files 105 | .dynamodb/ 106 | 107 | # Temporary folders 108 | tmp/ 109 | temp/ 110 | 111 | ### VisualStudioCode ### 112 | .vscode/* 113 | !.vscode/settings.json 114 | !.vscode/tasks.json 115 | !.vscode/launch.json 116 | !.vscode/extensions.json 117 | 118 | ### VisualStudioCode Patch ### 119 | # Ignore all local history of files 120 | .history 121 | 122 | ### Windows ### 123 | # Windows thumbnail cache files 124 | Thumbs.db 125 | Thumbs.db:encryptable 126 | ehthumbs.db 127 | ehthumbs_vista.db 128 | 129 | # Dump file 130 | *.stackdump 131 | 132 | # Folder config file 133 | [Dd]esktop.ini 134 | 135 | # Recycle Bin used on file shares 136 | $RECYCLE.BIN/ 137 | 138 | # Windows Installer files 139 | *.cab 140 | *.msi 141 | *.msix 142 | *.msm 143 | *.msp 144 | 145 | # Windows shortcuts 146 | *.lnk 147 | 148 | # End of https://www.gitignore.io/api/node,windows,visualstudiocode 149 | -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | npx lint-staged 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "arrowParens": "always", 4 | "singleQuote": false, 5 | "printWidth": 100 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "editorconfig.editorconfig", 4 | "dbaeumer.vscode-eslint", 5 | "esbenp.prettier-vscode" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All versions upwards from `2.0.0` project will be documented in this file. For all older version, please check the [Releases](https://github.com/marcopixel/r6operators/releases/) tab. 4 | 5 | ## 2.11.1 (2025-03-26) 6 | 7 | ### 🐛 Bug Fixes 8 | 9 | - 🛠 Fixed incorrect CURRENT_SEASON value ([79591bc](https://github.com/marcopixel/r6operators/commit/79591bc93c9aa0de6c3f41fab9bf51034d45ad27)) 10 | 11 | ## 2.11.0 (2025-03-24) 12 | 13 | - 🌟 Added Rauora operator icon & metadata (thanks to @J4yJ4y-R6 & @ynn-dev, [03a2805](https://github.com/marcopixel/r6operators/commit/03a28059efb2d26b18de18bbcf1546acf9682656), [ba9b2cd](https://github.com/marcopixel/r6operators/commit/ba9b2cdee5a68682da387fe8c0902f466cb5f1ae)) 14 | 15 | ## 2.10.2 (2024-10-16) 16 | 17 | ### 🐛 Bug Fixes 18 | 19 | - 🛠 Fixed incorrect CURRENT_SEASON value again (thanks to @AlmostSuspense, [215fbf7](https://github.com/marcopixel/r6operators/commit/215fbf709b91f3ba31958b19fc461820f395d19e)) 20 | 21 | 22 | ## 2.10.1 (2024-09-21) 23 | 24 | ### 🐛 Bug Fixes 25 | 26 | - 🛠 Fixed incorrect CURRENT_SEASON value ([b1add90](https://github.com/marcopixel/r6operators/commit/b1add909ddda65263ae948cb2f8204727efcc2ca)) 27 | 28 | 29 | ## 2.10.0 (2024-09-21) 30 | 31 | ### ✨ Features 32 | 33 | - 🌟 Added Skopós operator icon & metadata (thanks to @J4yJ4y-R6 & @AlmostSuspense, [aa570e7](https://github.com/marcopixel/r6operators/commit/aa570e71e79539e5870d6e4196ed84cfb0af97fa)) 34 | 35 | ## 2.9.0 (2024-05-31) 36 | 37 | ### ✨ Features 38 | * 🌟 add sentry and striker metadata and icon by @danielwerg in https://github.com/marcopixel/r6operators/pull/58 39 | * 📝 add operator issue template by @danielwerg in https://github.com/marcopixel/r6operators/pull/57 40 | 41 | 42 | ## 2.8.0 (2024-03-03) 43 | 44 | ### ✨ Features 45 | 46 | - 🌟 Added Deimos operator icon & metadata ([0af085d](https://github.com/marcopixel/r6operators/commit/0af085d0130f794ed69ef3c03d63773eda77aca1)) 47 | 48 | ### 🐛 Bug Fixes 49 | 50 | - 🛠 Fixed Zofia squad copy/paste mistake ([74a4cb7](https://github.com/marcopixel/r6operators/commit/74a4cb70b87e0098f0fc618c80ed55d316aea8f8)) 51 | 52 | 53 | ## 2.7.0 (2023-11-22) 54 | 55 | ### ✨ Features 56 | 57 | - 🌟 Added Tubarão operator icon & metadata (thanks to @danielwerg, [d924845](https://github.com/marcopixel/r6operators/commit/d924845f279b2910300468b3291fe4a89fcccbe4)) 58 | 59 | ## 2.6.1 (2023-09-05) 60 | 61 | ### 🐛 Bug Fixes 62 | 63 | - 🛠 Fixed Ram icon inconsistencies & removed embedded raster image (thanks to @danielwerg, [66ba1aa](https://github.com/marcopixel/r6operators/commit/66ba1aa855932acf18547d6dc7b6546810c40ff0)) 64 | 65 | ## 2.6.0 (2023-09-04) 66 | 67 | ### ✨ Features 68 | 69 | - 🌟 Added Ram operator icon & metadata ([5f5f2b9](https://github.com/marcopixel/r6operators/commit/5f5f2b9a2bd59497383535c9b9155c0d26707aa1)) 70 | 71 | ## 2.5.0 (2023-05-24) 72 | 73 | ### ✨ Features 74 | 75 | - 🌟 Added Fenrir operator icon & metadata (thanks to @danielwerg, [557b359](https://github.com/marcopixel/r6operators/commit/557b359e7af2e9d761a67a58739e19c4ba6e41e2)) 76 | - 🌟 Added Brava operator icon & metadata (thanks to @danielwerg, [afc28fa](https://github.com/marcopixel/r6operators/commit/afc28fa35fbb157e7e0d1d2ff1e04778dc45180f)) 77 | 78 | ### 🐛 Bug Fixes 79 | 80 | - 🛠 Updated operator metadata ([c457841](https://github.com/marcopixel/r6operators/commit/c4578413e73a71a1a172022e41db53003ebae618)) 81 | 82 | ### 🚨 Breaking Changes 83 | 84 | - **BREAKING**: Replaced `[op].unit` with `[op].org` and `[op].squad` ([c457841](https://github.com/marcopixel/r6operators/commit/c4578413e73a71a1a172022e41db53003ebae618)) 85 | 86 | ## 2.4.0 (2022-12-07) 87 | 88 | ### ✨ Features 89 | 90 | - 🌟 Added Solis operator icon & metadata - thanks to @danielwerg for making the icon and collecting the metadata ([b6b1741](https://github.com/marcopixel/r6operators/commit/b6b17413ee3a8cb4b3dc4328c2ab36062363208a)) 91 | 92 | ## 2.3.0 (2022-09-06) 93 | 94 | ### ✨ Features 95 | 96 | - 🌟 Added Grim operator icon & metadata ([b812269](https://github.com/marcopixel/r6operators/commit/b81226947cedca55a62ac3dfb5ebe1f62548dbc5)) 97 | - 🛠 Added function to automatically calculate operator prices (by @danielwerg, [08989b6](https://github.com/marcopixel/r6operators/commit/08989b6666b2d1fc5fbe7fccdbb3b067fbdaea7a)) 98 | 99 | ## 2.2.0 (2022-06-23) 100 | 101 | ### ✨ Features 102 | 103 | - 🌟 Added Sens operator icon & metadata ([3132a88](https://github.com/marcopixel/r6operators/commit/3132a88e0d8f3b4dd4e7fd1acfb7fa1040651f99)) 104 | 105 | ### 🐛 Bug Fixes 106 | 107 | - 🛠 Updated operator prices + glaz rating (by @danielwerg, [6eaf958](https://github.com/marcopixel/r6operators/commit/6eaf958e24fcaba0b01ba5be7f351348606a867c)) 108 | 109 | ## 2.1.0 (2022-03-16) 110 | 111 | ### ✨ Features 112 | 113 | - 🌟 Added Azami operator icon & metadata ([5561296](https://github.com/marcopixel/r6operators/commit/55612961add5b512896f388e31af96bb8f07f49c)) 114 | - 🪙 Add operator prices (by [@leochras](https://github.com/leochras), [f2f5b62](https://github.com/marcopixel/r6operators/commit/f2f5b62a1c29b2b023126d1a9af8bca8dce1936f)) 115 | 116 | ### 🐛 Bug Fixes 117 | 118 | - 🛠 Corrected incorrect season on Ela (by [@danielwerg](https://github.com/danielwerg), [6a8e270](https://github.com/marcopixel/r6operators/commit/6a8e27019e96dd3a9a17dba04065e3737fd76800)) 119 | 120 | ## 2.0.0 (2021-12-01) 121 | 122 | ### ✨ Features 123 | 124 | - 📝 Rewrote library code for better typings, smaller filesize and future features ([6c84917](https://github.com/marcopixel/r6operators/commit/6c8491729761d3929a55597b655f41d091cce0ec)) 125 | - 🎨 Reworked existing operator icons to the new style ([bfac854](https://github.com/marcopixel/r6operators/commit/bfac85442b01429553996428659bae1eee87ffb6), [80dbc5b](https://github.com/marcopixel/r6operators/commit/80dbc5b577449bf39dc50175115fb86c7aa410ea)) 126 | - 🌟 Added Thorn opperator icon & metadata ([11ad21c](https://github.com/marcopixel/r6operators/commit/11ad21c2ae109c867203bc5782cf6bb3804cfb8f)) 127 | 128 | ### 🐛 Bug Fixes 129 | 130 | - 🛠 Corrected incorrect metadata on Doc & Thatcher ([bb7e7a5](https://github.com/marcopixel/r6operators/commit/bb7e7a5d185026dfddb24f58da01295f123fa52a)) 131 | 132 | ### 🚨 Breaking Changes 133 | 134 | - **BREAKING**: Changed `[op].sex` to `[op].gender` ([b46431e](https://github.com/marcopixel/r6operators/commit/b46431e2e2181083c120948161fe91c77e4fc4cf)) 135 | - **BREAKING**: Renamed `[op].ratings.armor` to `[op].ratings.health` ([4311beb](https://github.com/marcopixel/r6operators/commit/4311beb57cc80ae2562631c83e6d6bbf2bad2b0a)) 136 | - **BREAKING**: PNG files are no longer supplied with the library ([See #1 for more information](https://github.com/marcopixel/r6operators/issues/1#issuecomment-861881904)) 137 | - **BREAKING**: Compiled library & icons path moved from `/lib` to `/dist` ([7756724](https://github.com/marcopixel/r6operators/commit/7756724e0f2d56cf7cc8521da8727c0804af06da)) 138 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Thank you for your interest to contribute to this project. You're awesome! :+1: 4 | 5 | Below here are some guidelines for contributing to this project, please read them before creating a pull request/issue on Github. 6 | 7 | Feel free to improve these guidelines with a pull request! 😄 8 | 9 | ## Getting started 10 | 11 | **What does "contributing" mean?** 12 | 13 | Creating an issue is the simplest form of contributing to a project. But there are many ways to contribute, including the following: 14 | 15 | - Updating or correcting documentation 16 | - Feature requests 17 | - Bug reports 18 | 19 | If you'd like to learn more about contributing in general, the [Guide to Idiomatic Contributing](https://github.com/jonschlinkert/idiomatic-contributing) has a lot of useful information. 20 | 21 | ## Issues 22 | 23 | Please only create issues for bug reports or feature requests. Issues discussing any other topics may be closed by the project's maintainers without further explanation. 24 | 25 | Do not create issues about bumping dependencies unless a bug has been identified and you can demonstrate that it effects this library. 26 | 27 | **Help us to help you** 28 | 29 | Remember that we’re here to help, but not to make guesses about what you need help with: 30 | 31 | - Whatever bug or issue you're experiencing, assume that it will not be as obvious to the maintainers as it is to you. 32 | - Spell it out completely. Keep in mind that maintainers need to think about _all potential use cases_ of a library. It's important that you explain how you're using a library so that maintainers can make that connection and solve the issue. 33 | 34 | _It can't be understated how frustrating and draining it can be to maintainers to have to ask clarifying questions on the most basic things, before it's even possible to start debugging. Please try to make the best use of everyone's time involved, including yourself, by providing this information up front._ 35 | 36 | ### Before creating an issue 37 | 38 | Please try to determine if the issue is caused by an underlying library, and if so, create the issue there. Sometimes this is difficult to know. We only ask that you attempt to give a reasonable attempt to find out. Oftentimes the readme will have advice about where to go to create issues. 39 | 40 | Try to follow these guidelines: 41 | 42 | - **Avoid creating issues for implementation help** - It's much better for discoverability, SEO, and semantics - to keep the issue tracker focused on bugs and feature requests - to ask implementation-related questions please go to [stackoverflow.com](https://stackoverflow.com/) 43 | - **Investigate the issue** - Search for exising issues (open or closed) that address the issue, and might have even resolved it already. 44 | - **Check the readme** - oftentimes you will find notes about creating issues, and where to go depending on the type of issue. 45 | - Create the issue in the appropriate repository. 46 | 47 | ### Creating an issue 48 | 49 | Please be as descriptive as possible when creating an issue. Give us the information we need to successfully answer your question or address your issue by answering the following in your issue: 50 | 51 | - **description**: (required) What is the bug you're experiencing? How are you using this library/app? 52 | - **version**: (required) please note the version you are using 53 | - **error messages**: (required) please paste any error messages into the issue, or a [gist](https://gist.github.com/) 54 | 55 | ### Closing issues 56 | 57 | The original poster or the maintainers may close an issue at any time. Typically, but not exclusively, issues are closed when: 58 | 59 | - The issue is resolved 60 | - The project's maintainers have determined the issue is out of scope 61 | - An issue is clearly a duplicate of another issue, in which case the duplicate issue will be linked. 62 | - A discussion has clearly run its course 63 | 64 | ## Next steps 65 | 66 | **Tips for creating idiomatic issues** 67 | 68 | Spending just a little extra time to review best practices and brush up on your contributing skills will, at minimum, make your issue easier to read, easier to resolve, and more likely to be found by others who have the same or similar issue in the future. At best, it will open up doors and potential career opportunities by helping you be at your best. 69 | 70 | The following resources were hand-picked to help you be the most effective contributor you can be: 71 | 72 | - The [Guide to Idiomatic Contributing](https://github.com/jonschlinkert/idiomatic-contributing) is a great place for newcomers to start, but there is also information for experienced contributors there. 73 | - Take some time to learn basic markdown. We can't stress this enough. Don't start pasting code into GitHub issues before you've taken a moment to review this [markdown cheatsheet](https://gist.github.com/jonschlinkert/5854601) 74 | - And if you want to really go above and beyond, read [mastering markdown](https://guides.github.com/features/mastering-markdown/). 75 | 76 | At the very least, please try to: 77 | 78 | - Use backticks to wrap code. This ensures that it retains its formatting and isn't modified when it's rendered by GitHub, and makes the code more readable to others 79 | - When applicable, use syntax highlighting by adding the correct language name after the first "code fence" 80 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Marco Vockner 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![r6operators Header Image](https://i.imgur.com/1qhhXYK.png) 2 | 3 | # r6operators 4 | 5 | ![GitHub last commit](https://img.shields.io/github/last-commit/marcopixel/r6operators.svg?style=for-the-badge) 6 | [![GitHub stars](https://img.shields.io/github/stars/marcopixel/r6operators.svg?style=for-the-badge)](https://github.com/marcopixel/r6operators/stargazers) 7 | [![GitHub forks](https://img.shields.io/github/forks/marcopixel/r6operators.svg?style=for-the-badge)](https://github.com/marcopixel/r6operators/network) 8 | [![GitHub license](https://img.shields.io/github/license/marcopixel/r6operators.svg?style=for-the-badge)](https://github.com/marcopixel/r6operators) 9 | 10 | r6operators is a collection of high-quality vectorized Rainbow Six: Siege Operator icons & metadata for Node.js. 11 | 12 | This project started as way for people to get high-resolution operator icons for Rainbow Six: Siege operators, especially as vector graphics gained popularity in web development in the recent years. All icons have been remade by hand and they got the same aspect ratio & alignment for more consistent usage. 13 | 14 | [https://r6operators.marcopixel.eu/](https://r6operators.marcopixel.eu/) 15 | 16 | ## Usage 17 | 18 | #### 1. Install 19 | 20 | Install the package with [npm](https://docs.npmjs.com/getting-started/what-is-npm): 21 | 22 | ```shell 23 | npm install r6operators 24 | ``` 25 | 26 | #### 2. Use it 27 | 28 | ```js 29 | import r6operators from "r6operators" 30 | // default export 31 | 32 | import { ace, getSVGIcon } from "r6operators" 33 | // named exports 34 | 35 | r6operators.alibi 36 | // { 37 | // id: 'alibi', 38 | // name: 'Alibi', 39 | // role: 'Defender', 40 | // org: 'GIS', 41 | // squad: 'VIPERSTRIKE', 42 | // ratings: { 43 | // health: 1, 44 | // speed: 3, 45 | // difficulty: 3 46 | // }, 47 | // meta: { 48 | // gender: 'f', 49 | // country: 'it', 50 | // season: 'Y3S2', 51 | // height: 171, 52 | // weight: 63, 53 | // price: 10000 54 | // }, 55 | // bio: { 56 | // real_name: 'Aria de Luca', 57 | // birthplace: 'Tripoli, Lybia' 58 | // }, 59 | // svg: { 60 | // contents: [SVG Contents], 61 | // attributes: { 62 | // xmlns: 'http://www.w3.org/2000/svg', 63 | // viewBox: '0 0 350 350', 64 | // style: 'enable-background:new 0 0 350 350', 65 | // space: 'preserve', 66 | // class: 'r6operators r6operators-alibi' 67 | // } 68 | // }, 69 | // toSVG: [Function] 70 | // } 71 | 72 | r6operators.alibi.toSVG() 73 | // ... 74 | 75 | r6operators.alibi.toSVG({ class: "large", "stroke-width": 2, color: "red" }) 76 | // ... 77 | ``` 78 | 79 | You can also access the optimized SVG icons directly from `node_modules\r6operators\dist\icons` if you desire. 80 | 81 | ## Reference 82 | 83 | ### `r6operators.[name]` 84 | 85 | An object containing all data about the operator, including the svg contents and attributes. 86 | 87 | > Note: You can find all possible operator names in the [operators/index.ts](https://github.com/marcopixel/r6operators/blob/master/operators/index.ts) file 88 | > 89 | > Please keep in mind that the properties `bio`, `meta` and `ratings` are not available on recruits. 90 | 91 | ##### Example: 92 | 93 | ```js 94 | r6operators.alibi 95 | // { 96 | // id: 'alibi', 97 | // name: 'Alibi', 98 | // role: 'Defender', 99 | // org: 'GIS', 100 | // squad: 'VIPERSTRIKE', 101 | // ratings: { 102 | // health: 1, 103 | // speed: 3, 104 | // difficulty: 3 105 | // }, 106 | // meta: { 107 | // gender: 'f', 108 | // country: 'it', 109 | // season: 'Y3S2', 110 | // height: 171, 111 | // weight: 63, 112 | // price: 10000 113 | // }, 114 | // bio: { 115 | // real_name: 'Aria de Luca', 116 | // birthplace: 'Tripoli, Lybia' 117 | // }, 118 | // svg: { 119 | // contents: [SVG Contents], 120 | // attributes: { 121 | // xmlns: 'http://www.w3.org/2000/svg', 122 | // viewBox: '0 0 350 350', 123 | // style: 'enable-background:new 0 0 350 350', 124 | // space: 'preserve', 125 | // class: 'r6operators r6operators-alibi' 126 | // } 127 | // }, 128 | // toSVG: [Function] 129 | // } 130 | 131 | r6operators.alibi.unit.toString() 132 | // GIS 133 | ``` 134 | 135 | --- 136 | 137 | ### `r6operators.[name].toSVG([attrs])` 138 | 139 | Returns an SVG string of the operator icon. 140 | 141 | #### Parameters 142 | 143 | | Name | Type | Description | 144 | | ------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 145 | | `attrs` (optional) | Object | Key-value pairs in the `attrs` object will be mapped to HTML attributes on the `` tag (e.g. `{ foo: 'bar' }` maps to `foo="bar"`). All default attributes on the `` tag can be overridden with the `attrs` object. | 146 | 147 | ```js 148 | r6operators.alibi.toSVG() 149 | // ... 150 | 151 | r6operators.alibi.toSVG({ class: "large" }) 152 | // ... 153 | 154 | r6operators.alibi.toSVG({ "stroke-width": 2, color: "red" }) 155 | // ... 156 | ``` 157 | 158 | --- 159 | 160 | ### `getSVGIcon([op], [attrs])` 161 | 162 | Returns an SVG string of the operator icon. 163 | 164 | #### Parameters 165 | 166 | | Name | Type | Description | 167 | | ------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 168 | | `op` | Operator | Operator object | 169 | | `attrs` (optional) | Object | Key-value pairs in the `attrs` object will be mapped to HTML attributes on the `` tag (e.g. `{ foo: 'bar' }` maps to `foo="bar"`). All default attributes on the `` tag can be overridden with the `attrs` object. | 170 | 171 | ```js 172 | import { alibi, getSVGIcon } from "r6operators" 173 | 174 | getSVGIcon(alibi) 175 | // ... 176 | 177 | getSVGIcon(alibi, { class: "large" }) 178 | // ... 179 | ``` 180 | 181 | ## Contributing 182 | 183 | For more info on how to contribute please see the [contribution guidelines](https://github.com/marcopixel/r6operators/blob/master/CONTRIBUTING.md). 184 | 185 | Caught a mistake or want to contribute to the documentation? [Edit this page on Github](https://github.com/marcopixel/r6operators/blob/master/README.md) 186 | 187 | ## Credits 188 | 189 | - [@colebemis](https://github.com/colebemis) for his work on [feather](https://github.com/feathericons/feather), which gave me an awesome reference for this project. 190 | - [@dtSniper](https://twitter.com/sniperdt) for creating the IQ, Thatcher, Fuze, Glaz, Bandit, Kapkan, Tachanka, Pulse, Sledge and Doc icons. 191 | - [@joeyfjj](https://twitter.com/joeyfjj) for creating the Goyo, Mute, Smoke, Jäger and Blitz icons. 192 | - [@danielwerg](https://github.com/danielwerg/) for creating the Fenrir, Brava and Solis icons and his awesome price calculator function. 193 | - [@LaxisB](https://github.com/LaxisB/), [@NaughtyMuppet](https://github.com/NaughtyMuppet) & [@danielwerg](https://github.com/danielwerg) for general help on this project. <3 194 | 195 | ## License 196 | 197 | r6operators is licensed under the [MIT License](https://github.com/marcopixel/r6operators/blob/master/LICENSE). 198 | 199 | This project is not affiliated with Ubisoft Entertainment. Tom Clancy’s, Rainbow Six, The Soldier Icon, Ubisoft and the Ubisoft logo are trademarks of Ubisoft Entertainment. 200 | -------------------------------------------------------------------------------- /jest.config.ts: -------------------------------------------------------------------------------- 1 | // jest.config.ts 2 | import type { Config } from "@jest/types" 3 | import { pathsToModuleNameMapper } from "ts-jest" 4 | import tsconfig from "./tsconfig.json" 5 | 6 | const config: Config.InitialOptions = { 7 | preset: "ts-jest", 8 | collectCoverage: true, 9 | coverageDirectory: "coverage", 10 | moduleNameMapper: pathsToModuleNameMapper(tsconfig.compilerOptions.paths, { 11 | prefix: "/", 12 | }), 13 | } 14 | export default config 15 | -------------------------------------------------------------------------------- /operators/ace/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const ace: IOperator = { 4 | name: "Ace", 5 | role: "Attacker", 6 | org: "NIGHTHAVEN", 7 | squad: "NIGHTHAVEN", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "no", 16 | season: "Y5S2", 17 | height: 187, 18 | weight: 75, 19 | }, 20 | bio: { 21 | real_name: "Håvard Haugland", 22 | birthplace: "Lærdalsøyri, Norway", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/alibi/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const alibi: IOperator = { 4 | name: "Alibi", 5 | role: "Defender", 6 | org: "GIS", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "it", 16 | season: "Y3S2", 17 | height: 171, 18 | weight: 63, 19 | }, 20 | bio: { 21 | real_name: "Aria de Luca", 22 | birthplace: "Tripoli, Lybia", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/amaru/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const amaru: IOperator = { 4 | name: "Amaru", 5 | role: "Attacker", 6 | org: "APCA", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "pe", 16 | season: "Y4S3", 17 | height: 189, 18 | weight: 84, 19 | }, 20 | bio: { 21 | real_name: "Azucena Rocío Quispe", 22 | birthplace: "Cojata, Peru", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/aruni/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const aruni: IOperator = { 4 | name: "Aruni", 5 | role: "Defender", 6 | org: "NIGHTHAVEN", 7 | squad: "NIGHTHAVEN", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "th", 16 | season: "Y5S4", 17 | height: 160, 18 | weight: 58, 19 | }, 20 | bio: { 21 | real_name: "Apha Tawanroong", 22 | birthplace: "Ta Phraya District, Thailand", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/ash/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const ash: IOperator = { 4 | name: "Ash", 5 | role: "Attacker", 6 | org: "FBI SWAT", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "us", 16 | season: "Release", 17 | height: 170, 18 | weight: 63, 19 | }, 20 | bio: { 21 | real_name: "Eliza Cohen", 22 | birthplace: "Jerusalem, Israel", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/azami/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const azami: IOperator = { 4 | name: "Azami", 5 | role: "Defender", 6 | org: "UNAFFILIATED", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "jp", 16 | season: "Y7S1", 17 | height: 164, 18 | weight: 56.7, 19 | }, 20 | bio: { 21 | real_name: "Kana Fujiwara", 22 | birthplace: "Kyoto, Japan", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/bandit/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const bandit: IOperator = { 4 | name: "Bandit", 5 | role: "Defender", 6 | org: "GSG 9", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "de", 16 | season: "Release", 17 | height: 180, 18 | weight: 68, 19 | }, 20 | bio: { 21 | real_name: "Dominic Brunsmeier", 22 | birthplace: "Berlin, Germany", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/blackbeard/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const blackbeard: IOperator = { 4 | name: "Blackbeard", 5 | role: "Attacker", 6 | org: "NAVY SEAL", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "us", 16 | season: "Y1S2", 17 | height: 180, 18 | weight: 84, 19 | }, 20 | bio: { 21 | real_name: "Craig Jenson", 22 | birthplace: "Bellevue, U.S.A", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/blitz/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const blitz: IOperator = { 4 | name: "Blitz", 5 | role: "Attacker", 6 | org: "GSG 9", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "de", 16 | season: "Release", 17 | height: 175, 18 | weight: 75, 19 | }, 20 | bio: { 21 | real_name: "Elias Kötz", 22 | birthplace: "Bremen, Germany", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/brava/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const brava: IOperator = { 4 | name: "Brava", 5 | role: "Attacker", 6 | org: "COT", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "br", 16 | season: "Y8S1", 17 | height: 170, 18 | weight: 71, 19 | }, 20 | bio: { 21 | real_name: "Nayara Cardoso", 22 | birthplace: "Curitiba, Brazil", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/buck/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const buck: IOperator = { 4 | name: "Buck", 5 | role: "Attacker", 6 | org: "JTF2", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "ca", 16 | season: "Y1S1", 17 | height: 178, 18 | weight: 78, 19 | }, 20 | bio: { 21 | real_name: "Sebastien Côté", 22 | birthplace: "Montreal, Canada", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/capitao/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const capitao: IOperator = { 4 | name: "Capitão", 5 | role: "Attacker", 6 | org: "BOPE", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "br", 16 | season: "Y1S3", 17 | height: 183, 18 | weight: 86, 19 | }, 20 | bio: { 21 | real_name: "Vincente Souza", 22 | birthplace: "Nova Iguacu, Brazil", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/castle/castle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 28 | 30 | 32 | 33 | 34 | 37 | 39 | 41 | 42 | 43 | 46 | 48 | 50 | 51 | 52 | 55 | 57 | 59 | 60 | 61 | 62 | 63 | 66 | 68 | 70 | 71 | 72 | 75 | 77 | 79 | 80 | 81 | 84 | 86 | 88 | 89 | 90 | 91 | 92 | 95 | 97 | 99 | 100 | 101 | 104 | 106 | 108 | 109 | 110 | 113 | 115 | 117 | 118 | 119 | 122 | 124 | 126 | 127 | 128 | 129 | 130 | 133 | 135 | 137 | 138 | 139 | 142 | 144 | 146 | 147 | 148 | 151 | 153 | 155 | 156 | 157 | 158 | 164 | 170 | 171 | 178 | 179 | 180 | 181 | 182 | -------------------------------------------------------------------------------- /operators/castle/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const castle: IOperator = { 4 | name: "Castle", 5 | role: "Defender", 6 | org: "FBI SWAT", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "us", 16 | season: "Release", 17 | height: 185, 18 | weight: 86, 19 | }, 20 | bio: { 21 | real_name: "Miles Campbell", 22 | birthplace: "Sherman Oaks, U.S.A", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/caveira/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const caveira: IOperator = { 4 | name: "Caveira", 5 | role: "Defender", 6 | org: "BOPE", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "br", 16 | season: "Y1S3", 17 | height: 177, 18 | weight: 72, 19 | }, 20 | bio: { 21 | real_name: "Taina Pereira", 22 | birthplace: "Rinópolis, Brazil", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/clash/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const clash: IOperator = { 4 | name: "Clash", 5 | role: "Defender", 6 | org: "GSUTR", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "uk", 16 | season: "Y3S3", 17 | height: 179, 18 | weight: 73, 19 | }, 20 | bio: { 21 | real_name: "Morowa Evans", 22 | birthplace: "London, England", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/deimos/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const deimos: IOperator = { 4 | name: "Deimos", 5 | role: "Attacker", 6 | org: "KERES LEGION", 7 | squad: "UNAFFILIATED", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "us", 16 | season: "Y9S1", 17 | height: 186, 18 | weight: 94, 19 | }, 20 | bio: { 21 | real_name: "Gerald Morris", 22 | birthplace: "Birmingham, Alabama, USA", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/doc/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const doc: IOperator = { 4 | name: "Doc", 5 | role: "Defender", 6 | org: "GIGN", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "fr", 16 | season: "Release", 17 | height: 177, 18 | weight: 74, 19 | }, 20 | bio: { 21 | real_name: "Gustave Kateb", 22 | birthplace: "Paris, France", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/dokkaebi/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const dokkaebi: IOperator = { 4 | name: "Dokkaebi", 5 | role: "Attacker", 6 | org: "707th SMB", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "sk", 16 | season: "Y2S4", 17 | height: 169, 18 | weight: 62, 19 | }, 20 | bio: { 21 | real_name: "Grace Nam", 22 | birthplace: "Seoul, South Korea", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/echo/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const echo: IOperator = { 4 | name: "Echo", 5 | role: "Defender", 6 | org: "SAT", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "jp", 16 | season: "Y1S4", 17 | height: 180, 18 | weight: 72, 19 | }, 20 | bio: { 21 | real_name: "Masaru Enatsu", 22 | birthplace: "Tokyo (Suginami-ku), Japan", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/ela/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const ela: IOperator = { 4 | name: "Ela", 5 | role: "Defender", 6 | org: "GROM", 7 | squad: "NIGHTHAVEN", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "pl", 16 | season: "Y2S3", 17 | height: 173, 18 | weight: 68, 19 | }, 20 | bio: { 21 | real_name: "Elzbieta Bosak", 22 | birthplace: "Wroclaw, Poland", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/fenrir/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const fenrir: IOperator = { 4 | name: "Fenrir", 5 | role: "Defender", 6 | org: "UNAFFILIATED", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "se", 16 | season: "Y8S2", 17 | height: 176, 18 | weight: 74, 19 | }, 20 | bio: { 21 | real_name: "Emil Svensson", 22 | birthplace: "Uppsala, Sweden", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/finka/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const finka: IOperator = { 4 | name: "Finka", 5 | role: "Attacker", 6 | org: "CBRN THREAT UNIT", 7 | squad: "NIGHTHAVEN", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "ru", 16 | season: "Y3S1", 17 | height: 171, 18 | weight: 68, 19 | }, 20 | bio: { 21 | real_name: "Lera Melnikova", 22 | birthplace: "Gomel, Belarus", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/flores/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const flores: IOperator = { 4 | name: "Flores", 5 | role: "Attacker", 6 | org: "UNAFFILIATED", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "ar", 16 | season: "Y6S1", 17 | height: 181, 18 | weight: 72, 19 | }, 20 | bio: { 21 | real_name: "Santiago Miguel Lucero", 22 | birthplace: "Buenos Aires, Argentina", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/frost/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const frost: IOperator = { 4 | name: "Frost", 5 | role: "Defender", 6 | org: "JTF2", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "ca", 16 | season: "Y1S1", 17 | height: 172, 18 | weight: 63, 19 | }, 20 | bio: { 21 | real_name: "Tina Lin Tsang", 22 | birthplace: "Vancouver, Canada", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/fuze/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const fuze: IOperator = { 4 | name: "Fuze", 5 | role: "Attacker", 6 | org: "SPETSNAZ", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "ru", 16 | season: "Release", 17 | height: 180, 18 | weight: 80, 19 | }, 20 | bio: { 21 | real_name: "Shuhrat Kessikbayev", 22 | birthplace: "Samarkand, Uzbekistan", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/glaz/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const glaz: IOperator = { 4 | name: "Glaz", 5 | role: "Attacker", 6 | org: "SPETSNAZ", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "ru", 16 | season: "Release", 17 | height: 178, 18 | weight: 79, 19 | }, 20 | bio: { 21 | real_name: "Timur Glazkov", 22 | birthplace: "Vladivostok, Russia", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/goyo/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const goyo: IOperator = { 4 | name: "Goyo", 5 | role: "Defender", 6 | org: "FUERZAS ESPECIALES", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "mx", 16 | season: "Y4S3", 17 | height: 171, 18 | weight: 83, 19 | }, 20 | bio: { 21 | real_name: "César Ruiz Hernández", 22 | birthplace: "Culiacán Rosales, Mexico", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/gridlock/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const gridlock: IOperator = { 4 | name: "Gridlock", 5 | role: "Attacker", 6 | org: "SASR", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "au", 16 | season: "Y4S1", 17 | height: 177, 18 | weight: 102, 19 | }, 20 | bio: { 21 | real_name: "Tori Tallyo Fairous", 22 | birthplace: "Longreach, Australia", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/grim/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const grim: IOperator = { 4 | name: "Grim", 5 | role: "Attacker", 6 | org: "NIGHTHAVEN", 7 | squad: "NIGHTHAVEN", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "u", 15 | country: "sg", 16 | season: "Y7S3", 17 | height: 179, 18 | weight: 89.8, 19 | }, 20 | bio: { 21 | real_name: "Charlie Tho Keng Boon", 22 | birthplace: "Jurong, Singapore", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/hibana/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const hibana: IOperator = { 4 | name: "Hibana", 5 | role: "Attacker", 6 | org: "SAT", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "jp", 16 | season: "Y1S4", 17 | height: 173, 18 | weight: 57, 19 | }, 20 | bio: { 21 | real_name: "Yumiko Imagawa", 22 | birthplace: "Nagoya, Japan", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/iana/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const iana: IOperator = { 4 | name: "Iana", 5 | role: "Attacker", 6 | org: "REU", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "nl", 16 | season: "Y5S1", 17 | height: 157, 18 | weight: 56, 19 | }, 20 | bio: { 21 | real_name: "Nienke Meijer", 22 | birthplace: "Katwijk, Nederlands", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/index.ts: -------------------------------------------------------------------------------- 1 | export { ace } from "./ace" 2 | export { alibi } from "./alibi" 3 | export { amaru } from "./amaru" 4 | export { aruni } from "./aruni" 5 | export { ash } from "./ash" 6 | export { azami } from "./azami" 7 | export { bandit } from "./bandit" 8 | export { blackbeard } from "./blackbeard" 9 | export { blitz } from "./blitz" 10 | export { brava } from "./brava" 11 | export { buck } from "./buck" 12 | export { capitao } from "./capitao" 13 | export { castle } from "./castle" 14 | export { caveira } from "./caveira" 15 | export { clash } from "./clash" 16 | export { deimos } from "./deimos" 17 | export { doc } from "./doc" 18 | export { dokkaebi } from "./dokkaebi" 19 | export { echo } from "./echo" 20 | export { ela } from "./ela" 21 | export { fenrir } from "./fenrir" 22 | export { finka } from "./finka" 23 | export { flores } from "./flores" 24 | export { frost } from "./frost" 25 | export { fuze } from "./fuze" 26 | export { glaz } from "./glaz" 27 | export { goyo } from "./goyo" 28 | export { gridlock } from "./gridlock" 29 | export { grim } from "./grim" 30 | export { hibana } from "./hibana" 31 | export { iana } from "./iana" 32 | export { iq } from "./iq" 33 | export { jackal } from "./jackal" 34 | export { jager } from "./jager" 35 | export { kaid } from "./kaid" 36 | export { kali } from "./kali" 37 | export { kapkan } from "./kapkan" 38 | export { lesion } from "./lesion" 39 | export { lion } from "./lion" 40 | export { maestro } from "./maestro" 41 | export { maverick } from "./maverick" 42 | export { melusi } from "./melusi" 43 | export { mira } from "./mira" 44 | export { montagne } from "./montagne" 45 | export { mozzie } from "./mozzie" 46 | export { mute } from "./mute" 47 | export { nokk } from "./nokk" 48 | export { nomad } from "./nomad" 49 | export { oryx } from "./oryx" 50 | export { osa } from "./osa" 51 | export { pulse } from "./pulse" 52 | export { sens } from "./sens" 53 | export { ram } from "./ram" 54 | export { rauora } from "./rauora" 55 | export { rook } from "./rook" 56 | export { skopos } from "./skopos" 57 | export { sledge } from "./sledge" 58 | export { smoke } from "./smoke" 59 | export { solis } from "./solis" 60 | export { tachanka } from "./tachanka" 61 | export { thatcher } from "./thatcher" 62 | export { thermite } from "./thermite" 63 | export { thorn } from "./thorn" 64 | export { thunderbird } from "./thunderbird" 65 | export { tubarao } from "./tubarao" 66 | export { twitch } from "./twitch" 67 | export { valkyrie } from "./valkyrie" 68 | export { vigil } from "./vigil" 69 | export { wamai } from "./wamai" 70 | export { warden } from "./warden" 71 | export { ying } from "./ying" 72 | export { zero } from "./zero" 73 | export { zofia } from "./zofia" 74 | export { recruit_blue } from "./recruit_blue" 75 | export { recruit_green } from "./recruit_green" 76 | export { recruit_orange } from "./recruit_orange" 77 | export { recruit_red } from "./recruit_red" 78 | export { recruit_yellow } from "./recruit_yellow" 79 | export { striker } from "./striker" 80 | export { sentry } from "./sentry" 81 | -------------------------------------------------------------------------------- /operators/iq/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const iq: IOperator = { 4 | name: "IQ", 5 | role: "Attacker", 6 | org: "GSG 9", 7 | squad: "NIGHTHAVEN", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "de", 16 | season: "Release", 17 | height: 175, 18 | weight: 70, 19 | }, 20 | bio: { 21 | real_name: "Monika Weiss", 22 | birthplace: "Leipzig, Germany", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/jackal/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const jackal: IOperator = { 4 | name: "Jackal", 5 | role: "Attacker", 6 | org: "GEO", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "es", 16 | season: "Y2S1", 17 | height: 190, 18 | weight: 78, 19 | }, 20 | bio: { 21 | real_name: "Ryad Ramirez Al-Hassar", 22 | birthplace: "Ceuta, Spain", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/jager/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const jager: IOperator = { 4 | name: "Jäger", 5 | role: "Defender", 6 | org: "GSG 9", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "de", 16 | season: "Release", 17 | height: 180, 18 | weight: 64, 19 | }, 20 | bio: { 21 | real_name: "Marius Streicher", 22 | birthplace: "Düsseldorf, Germany", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/kaid/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const kaid: IOperator = { 4 | name: "Kaid", 5 | role: "Defender", 6 | org: "GIGR", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "ma", 16 | season: "Y3S4", 17 | height: 195, 18 | weight: 98, 19 | }, 20 | bio: { 21 | real_name: "Jalal El Fassi", 22 | birthplace: "Aroumd, Morocco", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/kali/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const kali: IOperator = { 4 | name: "Kali", 5 | role: "Attacker", 6 | org: "NIGHTHAVEN", 7 | squad: "NIGHTHAVEN", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "in", 16 | season: "Y4S4", 17 | height: 170, 18 | weight: 67, 19 | }, 20 | bio: { 21 | real_name: "Jaimini Kalimohan Shah", 22 | birthplace: "Amreli, India", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/kapkan/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const kapkan: IOperator = { 4 | name: "Kapkan", 5 | role: "Defender", 6 | org: "SPETSNAZ", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "ru", 16 | season: "Release", 17 | height: 180, 18 | weight: 80, 19 | }, 20 | bio: { 21 | real_name: "Maxim Basuda", 22 | birthplace: "Kovrov, Russia", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/lesion/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const lesion: IOperator = { 4 | name: "Lesion", 5 | role: "Defender", 6 | org: "SDU", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "hk", 16 | season: "Y2S3", 17 | height: 174, 18 | weight: 82, 19 | }, 20 | bio: { 21 | real_name: "Liu Tze Long", 22 | birthplace: "Tseung Kwan O (Junk Bay), Hong Kong", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/lion/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const lion: IOperator = { 4 | name: "Lion", 5 | role: "Attacker", 6 | org: "CBRN THREAT UNIT", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "fr", 16 | season: "Y3S1", 17 | height: 185, 18 | weight: 87, 19 | }, 20 | bio: { 21 | real_name: "Olivier Flament", 22 | birthplace: "Toulouse, France", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/maestro/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const maestro: IOperator = { 4 | name: "Maestro", 5 | role: "Defender", 6 | org: "GIS", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "it", 16 | season: "Y3S2", 17 | height: 185, 18 | weight: 87, 19 | }, 20 | bio: { 21 | real_name: "Adriano Martello", 22 | birthplace: "Rome, Italy", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/maverick/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const maverick: IOperator = { 4 | name: "Maverick", 5 | role: "Attacker", 6 | org: "GSUTR", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "us", 16 | season: "Y3S3", 17 | height: 180, 18 | weight: 82, 19 | }, 20 | bio: { 21 | real_name: "Erik Thorn", 22 | birthplace: "Boston, U.S.A", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/melusi/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const melusi: IOperator = { 4 | name: "Melusi", 5 | role: "Defender", 6 | org: "INKABA TASK FORCE", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "sa", 16 | season: "Y5S2", 17 | height: 172, 18 | weight: 68, 19 | }, 20 | bio: { 21 | real_name: "Thandiwe Ndlovu", 22 | birthplace: "Louwsburg, South Africa", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/mira/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const mira: IOperator = { 4 | name: "Mira", 5 | role: "Defender", 6 | org: "GEO", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "es", 16 | season: "Y2S1", 17 | height: 165, 18 | weight: 60, 19 | }, 20 | bio: { 21 | real_name: "Elena Maria Alvarez del Manzano", 22 | birthplace: "Madrid, Spain", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/montagne/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const montagne: IOperator = { 4 | name: "Montagne", 5 | role: "Attacker", 6 | org: "GIGN", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "fr", 16 | season: "Release", 17 | height: 190, 18 | weight: 90, 19 | }, 20 | bio: { 21 | real_name: "Gilles Touré", 22 | birthplace: "Bordeaux, France", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/mozzie/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const mozzie: IOperator = { 4 | name: "Mozzie", 5 | role: "Defender", 6 | org: "SASR", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "au", 16 | season: "Y4S1", 17 | height: 162, 18 | weight: 57, 19 | }, 20 | bio: { 21 | real_name: "Max Goose", 22 | birthplace: "Portland, Australia", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/mute/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const mute: IOperator = { 4 | name: "Mute", 5 | role: "Defender", 6 | org: "SAS", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "uk", 16 | season: "Release", 17 | height: 185, 18 | weight: 80, 19 | }, 20 | bio: { 21 | real_name: "Mark Chandar", 22 | birthplace: "York, England", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/nokk/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const nokk: IOperator = { 4 | name: "Nøkk", 5 | role: "Attacker", 6 | org: "JAEGER CORPS", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "dk", 16 | season: "Y4S2", 17 | height: 0, 18 | weight: 0, 19 | }, 20 | bio: { 21 | real_name: "[REDACTED]", 22 | birthplace: "[REDACTED]", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/nomad/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const nomad: IOperator = { 4 | name: "Nomad", 5 | role: "Attacker", 6 | org: "GIGR", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "ma", 16 | season: "Y3S4", 17 | height: 171, 18 | weight: 63, 19 | }, 20 | bio: { 21 | real_name: "Sanaa El Maktoub", 22 | birthplace: "Marrakesh, Morocco", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/oryx/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const oryx: IOperator = { 4 | name: "Oryx", 5 | role: "Defender", 6 | org: "UNAFFILIATED", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "jo", 16 | season: "Y5S1", 17 | height: 195, 18 | weight: 130, 19 | }, 20 | bio: { 21 | real_name: "Saif Al Hadid", 22 | birthplace: "Azraq, Jordan", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/osa/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const osa: IOperator = { 4 | name: "Osa", 5 | role: "Attacker", 6 | org: "NIGHTHAVEN", 7 | squad: "NIGHTHAVEN", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "o", 15 | country: "hr", 16 | season: "Y6S3", 17 | height: 180, 18 | weight: 71, 19 | }, 20 | bio: { 21 | real_name: "Anja Katarina Janković", 22 | birthplace: "Split, Croatia", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/pulse/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const pulse: IOperator = { 4 | name: "Pulse", 5 | role: "Defender", 6 | org: "FBI SWAT", 7 | squad: "NIGHTHAVEN", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "us", 16 | season: "Release", 17 | height: 188, 18 | weight: 85, 19 | }, 20 | bio: { 21 | real_name: "Jack Estrada", 22 | birthplace: "Goldsboro, U.S.A", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/ram/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const ram: IOperator = { 4 | name: "Ram", 5 | role: "Attacker", 6 | org: "35th CB", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "kr", 16 | season: "Y8S3", 17 | height: 178, 18 | weight: 68, 19 | }, 20 | bio: { 21 | real_name: "Bo-Ram Choi", 22 | birthplace: "Busan, South Korea", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/rauora/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const rauora: IOperator = { 4 | name: "Rauora", 5 | role: "Attacker", 6 | org: "NZSAS", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "nz", 16 | season: "Y10S1", 17 | height: 186, 18 | weight: 80, 19 | }, 20 | bio: { 21 | real_name: "Hāpai Iwini", 22 | birthplace: "Christchurch, New Zealand", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/recruit_blue/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const recruit_blue: IOperator = { 4 | name: "Recruit (Blue)", 5 | role: "Recruit", 6 | org: "RECRUIT", 7 | squad: "RECRUIT", 8 | } 9 | -------------------------------------------------------------------------------- /operators/recruit_green/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const recruit_green: IOperator = { 4 | name: "Recruit (Green)", 5 | role: "Recruit", 6 | org: "RECRUIT", 7 | squad: "RECRUIT", 8 | } 9 | -------------------------------------------------------------------------------- /operators/recruit_orange/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const recruit_orange: IOperator = { 4 | name: "Recruit (Orange)", 5 | role: "Recruit", 6 | org: "RECRUIT", 7 | squad: "RECRUIT", 8 | } 9 | -------------------------------------------------------------------------------- /operators/recruit_red/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const recruit_red: IOperator = { 4 | name: "Recruit (Red)", 5 | role: "Recruit", 6 | org: "RECRUIT", 7 | squad: "RECRUIT", 8 | } 9 | -------------------------------------------------------------------------------- /operators/recruit_yellow/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const recruit_yellow: IOperator = { 4 | name: "Recruit (Yellow)", 5 | role: "Recruit", 6 | org: "RECRUIT", 7 | squad: "RECRUIT", 8 | } 9 | -------------------------------------------------------------------------------- /operators/rook/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const rook: IOperator = { 4 | name: "Rook", 5 | role: "Defender", 6 | org: "GIGN", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "fr", 16 | season: "Release", 17 | height: 175, 18 | weight: 72, 19 | }, 20 | bio: { 21 | real_name: "Julien Nizan", 22 | birthplace: "Tours, France", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/sens/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const sens: IOperator = { 4 | name: "Sens", 5 | role: "Attacker", 6 | org: "SFG", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "o", 15 | country: "be", 16 | season: "Y7S2", 17 | height: 178, 18 | weight: 73, 19 | }, 20 | bio: { 21 | real_name: "Néon Ngoma Mutombo", 22 | birthplace: "Brussels, Belgium", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/sens/sens.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ]> 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | KLUv/QBYtUoDynqLsCqQRGTYDQCAzWMMGdrNmkp3FIPlgpD1eiBkbIiJSHDWNT0jEgEAUaoAAAh1 58 | CjgLYwtaDuXYFf/Y/Iazlii63FUEsuz/ij+o/QGwIM1hX1bBXDbA6/ktGyuAV1c0vwNi5/qu+G39 59 | kNhBfgB2Xtsf8mCn53UWsTJbgl9Q92FrDeaunZZlrXMAfwTq5i//GHTpKgizGuv6noPFrmhIpNHs 60 | +iS5y/UiX2Dn3AQ12UewbLE8aLK+H1tkX8SrZ8DawjJb6SU3u02W5dz67Relsoaz8ht6R+0PDXzX 61 | 22Jd0heFUtDWpGYn0/XHKfzGaout/Ja1jiqa+M+uRv6zdaBdW2+n9VbmNdN+0aKDsC5pd3t+/U73 62 | njyZAngpmJKoW8DvyPV/S3nnWtpp0kUHca0wKZPX2QvL7dti2zVkYVfZ1mas3MUfXuHuLM2v33H9 63 | 31I+3Z/ZWEEnyz+G4ZqoK0tSjtnLl1+vWeS+rS8K4LtcTfzb2ut3VrZdO3Z2V3KW2QrMZQV8tmSO 64 | MJeNyay7ljo/muUuS/gdnaWobb/azVJvHfI+mhQ+jmbHz23WXrVtv7plbzzL8Sxq29pFk8p4qMPN 65 | F7PLxnD8A7zdDxB/+ccwxTxN//odsuT9ZWE/7gL4LTx7Wx3Mtq2M+wKAjd8Mb7lru7K6AGBctu1X 66 | 59fvqLyNm132BZW7m13np7n9WbYwN/2t9TKGfPeefP1OAH/uvsu2c+3t4v/qNCZ+3/YylqYfZ/fP 67 | AVj85lprbc5sa4U/cwzGhlQuNsZ8jjx/WU5/y1rn+IUDsIhzi63E5O/xnfuy8woANv6zvIa6uQbP 68 | tU93alKtOwBYuXOxMawb0HJ/vMKyu8Zzd2pS1m9Z3Z/X9pVZPm5Oclg3115Z63VlXbe3JtU/hrl+ 69 | 3O0uftu31bni9WXN8dqd23VY59W1zn8m4CX/Vlx7RQEEEIOxPzZggA/3uU0wNrtYAesPiZ3ZSXLP 70 | r9+ZvfP8str3pYjdbrGtvAW8ZL7nL5q/aJ3Xym/h2So/Zu8s11o8wGP/lrWyri9rva37ugPzF8Vr 71 | gM2yZqsruz92tWysxYDI8RpAJbuJBd9rHKe1dg3wXa8Lc9l4Fomd/Ocai43neYXM3/W64He9bjsL 72 | 4FR5rneg4zGJ4jqvlXOW2Q4FxPmmUDq9cTAK3zgWZeNaoI3bOACYWKA/z79dQSeke/2K2G0cRNw4 73 | l6nb3U5Dnf4tPGNF4sY5uj9bB8SOgTC3tfX1KweLjXt0roDX5YgbJ/92wCya4/Tku9uLjWMsNs7l 74 | WlRm2DHEWKv2jjqREX9X/OniD1vd1dO5XEuBqWMsurNvTepJ2u1s3Ezvjat0eyQ7WZae6/DcO/Q6 75 | 1GHJy3E09Ww1laXZu8nN8zxPfob+7Ewz9CMvSbPvktRak2PYtzc9OZZca12aIe/dSW4PdmcZlr3z 76 | pe4h6cPOwY7U3uThLjeuc5amGZbl6PXuphmSHezOHY4k2HE+cnM8yfM8T1KHpul3SI6daZY8LD3v 77 | SG+G48bNulLv3s1Sh+fZ+dLc5d7+PM9NhmcfT2/usXtenudZmmHnG9fpuh9Pk9zmeZ7kDvcIkjvk 78 | XZ9m2Tt5nmfvYSfBrpfc+336UO9uktqP53lqH+4R7LonPaj7SJLneW4fmrvrUnO+tdach7qDndlP 79 | b3pfnufpdUhu0INkuEcy5BvsztL03G+ttdYhycHu9KfvTg/uUHf6HD0vT+37OO5x5FrrUHfnOfay 80 | 7Jqb5Tl6M9TdHknSe11qcvfteai7fZYnOXZyl6V5ch3yvXEqb+MgKm/jHB3jwwNGKkxJtOhmVyN2 81 | pMrbuEc3IF7dl51bbGWOU1Hlbdxr4zq+3LhO50uwO33vJ+l711r3MvQb1+lO8uRnWZrneXIflh7s 82 | tln6cnvdtdbeh1uXYOdPsuykWZ7naY7hNnnfpMn7eZ4mD/0Idr4MzX3qzUmya633GJIl2O3N91iO 83 | 5nmeYw/JcTRH8jT7eZ5n3+HJwY77vU1Sb6113+H24MZ1OtL7Ho4enHW+7HwJblzI1GnO1WmEg87T 84 | 6d0J6HaX0Olu0+mNG2DqPDlq8vTjaup0aZ6jH0vTJM1xLM9Rk5xvv7s/d/fn3qQ/N2mSZhnqzo++ 85 | LL0v+d7l3meoN+6TdnpvXG3jftrpjRNg6vTGpZ3mGJ1uZl3uSuksmEpK6ciQPi02btya1POj52Xf 86 | fTRLTZ7bDHXndTmSJd++n6TWXWvOzXLspDl23U+/yR3q7tS6d91JsjxL33VYsVy23ryP3HPPO2Wk 87 | eApJKSkm5aSkFApFpVQoFsqFotWtdnVUvUqqpWqqp5qqFFVVK6pFvai6sisXlZKeF+0t3ltGT1q8 88 | xY/dwi3csi3bcvrSk3703XOv/WW0jOpIGc/RHMnRj+OoR0uvdLWn/exlJ/vYedfdwlVO4SffOIGN 89 | QzdOb801191rUpO61KU2T71xApy7XEuFsnEypfPam/sMz1GmqLyNE1FUXqf17rTvyG53vOu6Tndd 90 | F1NUXjdunN4lJ03Sb352bZ5kOZLl3uPJfeemeZKb+93Lc2u9zdMM9cb5Tp6b79LUm5tjD/XG6Y07 91 | 2DgXpeOd7jaOsbuuE/AHFt1jdj/rWmOMS+k4CPrZn+UBot+22DleQTOZbV/WbIDoB2A7ssv9bUs0 92 | x+kcp7F5BbkfUcf48BoTdS639sKz989sTdTF3+Wyr9i8gtr3HbXvO+pici2mdC02Bq8xjG3bVTXN 93 | 311b0Oyyayde3bWVWWwn1ppXAaL4nVmXpXPjP89rF4CdWx+W4w+C3/YHcC2z+H39yqJjdD9e2wsD 94 | Ztdw0TFgLtta41G36Bhz6yewPp3rA4CN37n1S4uNe1+uBq69McZlYbUWpDIHNg7msrPLxiD3HfBw 95 | bf4i2Nu+MchlYV+e3T+bvarLtXjexok8odYeVcW3++d5bS+qk4/b9Jssz5Ofmp97azM0O1662Bij 96 | Kh8uC2Pjz4etIK+XAj5b8q6vcrkWAeefVzf+c5uqyr03351ZmrsjSb670dy8657zXeqwl6PZmZqX 97 | 5VlqXoa9n2Wnu+3D3m2u9TmaIfe7M0vd+UmGpe5g9/hs6R25H/6o9O5G/phhqgCqF6ua3T+7r6py 98 | WdinqMod/wFrZ1YbMOda+8o/NH9YvI5Ufq/tpf2u13N2j9+uLdGHxWtHNXLePeSZdUnxb2shrcdR 99 | NMepyn/3HegeAj4b4G89mme5z/M8fbj32O2z+5KX/jxPHpom78jtu96k1lqToS872PE+eq1HrbXu 100 | oWlysGVD0pOedz70nv95beHZH/lyg91DlsXrDH5jBoL7sizshw4WuntQMKHuIcNcdp6/6MPWmUZV 101 | do8PW2WSqo++7B7xZ81qA66WrVFUfGvS3c3rLH4vv2UvKq9JvY2TtdaW0gl42/afunV2P2z1dO46 102 | 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 129 | 130 | 131 | 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 203 | 204 | 205 | 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 277 | 278 | 279 | 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 351 | 352 | 353 | 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 425 | 426 | 427 | D8QK8AhOY35Nbtg8wENU6yHI49z6YOFBFuZ7xvONsbbPlxaB088/inI6Q7Z6L5ZxrNa4iNwI5SK+ 428 | DmSukQUmrXcIsyimapYTW5QYqQqEEzPbDWo7mT5RmbjM3BadEMTYRn4S3mpcbwwlZMzLa/1smH3e 429 | Jk6mr9qupDqHr9gZDr1TBsk8JZTK6UAzd/kjCVl3HqC9ncEqvfGAUVIg+Bi+2vq1F2GPDSNsOHGh 430 | SAHeXc1RkYmZF3L8pNjVRYtFDRV086UlOL87k2ifTyNHYtLXRfxsBeQh1sNwJ6FnYkkAnz/BD+JY 431 | /EgQ9jZOjQFEkYd2sz0F3JAtlProMJG1f89cyejHoZ9aaWBIh0qYNiD+d+92iWSLuWsGNqaOWVjg 432 | GLDMrVKplcQ8fn2/4emW9HGwwpF8Jd5NX6pN1AvpFDe1jXPpscc7Ha4Cq9DSCDO8oETywfiUWFJr 433 | mjUyJbxRZbJDLBvlGGIKIkN4/N9+aLw+qfT/bZS8qXw4Z1bEuEHswkX02xo9v8/Epu7Ak3ra9S5Q 434 | BxgZkltPCHDiHcF2DslYTaMgLNpUvokr92HDuaZJWo3uXr5sKYDGh3w+0Ap6tAdwxIWNla9gfmae 435 | XPPREJxSInK3zOYh9rgcAIGJQ1T1TIDX7WFYmZzpgmIFeK4o7toEU4aSomn6gAttp0wArQHJhz7I 436 | 5BQMlOmgrW1YL++tyDPeP/qjpKk83Fc6EB64AK5vLHIHuVAdRkeGY/0+2+GzsWUXCzB2Xnc3ooTK 437 | SkEw4rft35QpNHU3Kb+h7Tj55DESKNit54ALCKuT45f/N/g/UMRYzObB4fvf7gHfZ9hqqXB0/cZA 438 | wNDKiQiSqi5bmwvdoYPSI0aB3s6QlgmSBvxHow4Q/yO0XmRDJlvDlP8zF21MJMqqhMBMGkdfJjqY 439 | 99bAyVjmnOS5O6YBqVumEdCyEOBfHp01VGAdVAl4LzZb0P7ZdMaeNKNPqLeA0b1XYsuyXwG1EN7s 440 | 5onG0NoPx722y2Qq5Ax4HIssVcmtJmEcsypyf+71eRcynIJV5S7NSLLXgrwTrJJcvtCQJu4NP4ZV 441 | KHz0x3Y2tdKDj9pWuCJQWIknU3nIbpxZiV6SjAUnTbSkn/dYLNhJgjcT8MzJ2ef17JEYoOrsEt03 442 | pmCho1jSSID1DiM9S8AmlQmIhL+ZSu3C7CROMDJux3kD5ETuh35kCjDZ/HD0DnLuyO8uk2CxwKCX 443 | kCwGTFspxsOOJENZBvVQsyR0HwWDC926s/Y2FRnA+wMbQPyaZZAzTUKcz2hkDtcRB3k0YNiy0SMn 444 | x/CfuWZcI5T6xARQS2K0fdnZu+IMwTtg8hHwQrUmOkX6qowDklXJDJv5SefNEJIQbyZcGWnFYwBa 445 | Ccr5Z2Km9z2kQYpQJTeB0dW2PtHQBXUW714JRFdb0DFVGPV+4gTJ1js5fHV5xjqqoZIqaLNeV3Nw 446 | 5+savofZCVxdViH1Isj7CBfnNevoK8fAZyWdDjQxLy9kqCRDHOwaFE0xEsB/stGeWEr7qUGigU1s 447 | Fk5iqNIqgaYRVXgWoZgTwN02aUUU5ku8hwONo7iYQEwvnPedBH93ft4mHQ6UxsKAK78PwfGNcEqW 448 | opsONXGzUkG7wiPzt95694AAUznqJ82qoXWowQBHocKimBL1LBcIdjiqo/UaSYqICoEbJxw/gkEg 449 | 5hJRu44DdYNroGQJUH7AfFFe6a6dkwa8g/p4vJLpbipe6oxZz3ObIyKivLQpZvk1iZsmtTB33pia 450 | 1VIrXKTBmXkvuDIfLBz6ENicBk2L4RirIBgFXnq5Ajxr/ECvLku7aNS/EUP6nSIpfI8/e1XyUWnx 451 | 9uwA/RIEB9JWwaXhDZVkMg6Ai7J/Dxle74M+lI3e7XiX4iK1qFPk+cfOo57zxvQ7iaciDeLp4ETU 452 | OujwTRYoI8SRsoK+DnVUIYRXF1FC0Mc59G2moWJLeVmaoAKcjNtNbbKCIAVwavni5jsyhO7pnDO8 453 | aUfe7qFIVO9ABS+Qg6dtTllzLn1zE4iCIk3ZruyRbfAQArQVjhGRzsAvioXMVRPU+2KubGjAOXhV 454 | gMgdFWwEDzO1O4bRZ+jgyBnw+PEg4p0PElv7ZBfwOyEzs6/h89qgJ9u+JafAzyeAr9FnBLjwdWuk 455 | uH3tZSMSXL8CsX3fgiQFAXlSduxjn17q6NLAYF713SgNbxAymc9nuQ0SHn40tSeBRAfUgn7Upm5E 456 | pALNHfiIg71pLmF4Vh+RYx7ycPGQaLvhWCAwUOKdkL12Cglhw3/ipZuClQ7uTRMWjGWAwArAJGYK 457 | vV5MJjXDhXMCgC20RsU4CusExYD8TLPOxww3V40y9KFQQoFHT+YA8ZQmd0m+1SzyGDokoVNgfllI 458 | ncQiCoiGyur9rWN3ifB9zfA13/Q2r9NAxrhUjzoAFtG88Am4mvXmWZyDTLjHydlSG2IkMpxtOqIX 459 | GfTBwTEyHI+MGtw/Tkv2+2QoTjAcmkxIM6r/XGFyKiZaOoAINFFwTUBy/Pp7VikbUUH88pFHi77j 460 | jbUJylWxUNDaPnn57/dQ1ZMxhgjct6FRHvigZ7wceHH3VnTboRYrUaDgIt0JvT0th+QGHLVZi06i 461 | +yj5UcCzlWyg7VKJJBWaGUzhhpoAcFiVP1hB0+A7Z8oXaoUo+ejno9EvrzawgpYeqU1PntMiQ/az 462 | iv4V67cPyJOnQaLARV1U33Ou4OICj04MKkYYBPWPnFMzqs3i71137cuAQHLINjylwY90Ac9hldq4 463 | c0bdSGNRe+MiOr8RC+vKbMHRQ1of63u53Es6fHbCtp31lqfhhP9IFgNno0P8ro5zPh8OjpbVsCWJ 464 | VM2JTZQhY4OApBlYuSstKkI0Xkj2n1yS0JulYjFM6+WTIjjSDRIhaRZT4cz5GYzQ/NAcmNKKBQdX 465 | sPtVS5rAtRuzffKAGQuPiXUm2/oydadyb0JIqbmC6gzzNKw2pXL88auZ4XaPXsrXNEUsQIbQANpv 466 | uzy+JSRoiuWozNbuC93DSSKEatmAUi4HJmo4fPihIsuJLOJHqysb11jexZQZpsYHHcOTfg/8KMYR 467 | UztAXNhbJJ+ksEJPoO614Ge8Oj2yel5J9kqwSE9AdMRawaMrSSIfdvZGGX1xGJ4Lhh0XDhJEq4h9 468 | 9DwE95BJVJB28vFBJOb+Y4j14Wo0IYlwAXkE6vWBGZyJ62rH4p11RfF9uo7fjVEvKwOWV8R6s8Fq 469 | NVo03pFKdVwYrlqgq1A5oQSmMw+hyeTxBi3taUIIl8VvWGO0hirdmFjLft7xiuWsn6etWcKnIS82 470 | FmBWX+bnLWTt2iW/hI07c54CzObs4s6V8nSjjIQEFacnkIpKWBMCJ9PrRQwAMabQOht+wuER1438 471 | mv5Gv4a24jK6rc9CC7SMEWqZcCq0+FsuLaJ2112jh6kB8EU4M3CB9JNypAqKCIfjcLzQ6EExw05m 472 | 5UWhZRocjtPYT+u7cDpj2EW4JtoVOhRnJuv3EFIROGoIiiLRBUs3p0nKjRgUDDVPBtGUp6KcwJeN 473 | 9tdot43ZLW+iFqrsiG7uhgVJReYjyetq08hcxHIWSECLaEV55IonwZer3cCx87ZBnfJj2v57CZRX 474 | 2Y1mkWu+be2dY3t7gjIIbFQKc0ao1xKso92GvJxxhkHNF3DoCG2VOraSOJiTV/rIT9tvlyl8LqGs 475 | 0kaSbOFQkVoT7s5dz3IeWUGsHWqg+c2fmy3iry9a3WSB9rPmXS9FfoxLfqHflPF8WiD16XdXY6rz 476 | sdo7cv6nsM6DHBXEjHirfJP8j2jwHhetBjYq5qzWoQsWgvREecPScqNlhgZhzvUqD16mBG25CxTg 477 | dTqHyXuRuN1lseZr7ecH+6VWM3UntpF8/t77dceNRHmNibjaXYOJ02iYH/g1MA8sPyguDDjcQrBq 478 | Qi8OrrRqWV/hmOn9bprt22k5rV8wlzcUnajJIZM07cHkBmgj7vnQPFYyJhPRZNdwJzWOo3RGbftS 479 | QBWEbVQETc3MSJAn9WJjhxwYwVcAqUZvMIL0rUGZHqSerMI554VB4mFGkoz3pX8eCGjuR20F7HQ1 480 | AhSflzFx1FqAJsk4f7nBHm0EFsWkpHri0oSdcghVdIgjErZMONAmPqM5+IH8AFA87hmOqGwG0ZnI 481 | 20vhtBe98OHunphFPvaRQjgRKLiKCpwqTDZseMKXvvQs90wmPhHEKDPD2ONpwdd++PODCpDmh4QF 482 | PoM3BVoxsoAz/TNYiF6peQuV8hj3/6zfXKoK90w4mf2/BK3yBfRCe5wY55Who4LKh6RC4pZXvhyl 483 | gNk4RvHpYGXWKJTnR6sH+mJew7ogEflagk1aNohgLJH4ws7+VgetEg8ycnPkyk3MxG1Kr+rbBYE4 484 | kITgim4MEg7wby9GgOQ1Yu7n5DMlDKn35rNkbgOw6xgqc5Wca9pcdsY1HMFv85OjGMEnnYQzdABJ 485 | K5aCU6LHyYWF5ZSBlsOl83YV3PplpdQCTg5nt0KZnwBEFsJPo/3/bUEepsuZUs4zbTMK0HbbGDZ1 486 | uWvLnNWRTk1tHnp5AHf1uNyVtKCGSqsC7wkMqzozQwdImR3pesVn/NZRpxcNABRwJokaQowfrbAz 487 | 8NMmSgHQmRe8NcIS0jBEajWOMoXUcn7ZMEaf/K4AuVMoixdn6KCc7DYj7J3Is1AzTv2AAwX3jgI9 488 | DM5jjPlbmbmrlYcVzGg9h8DPstZ0ZMiNWO7Bf1v2g3qoYTd9MVkkPqyJfIAZPDCA8m+WM9UO2tCz 489 | Hwqc4pKQk/XStlUhL+kGx7VhdzFJ2rZJuoJXoLQLvNk2L2g1hLZ1V9jXIjI4Wh7FI8qQfGc6Xg6/ 490 | kpvuzrmWWsKAXtpAwdutAOrmAvSkOGSGq31holkEwRNINheoks4u5aBYYGQe+s1F4cZt3oRaWB2j 491 | osclMjvyTIvHQTQlhaxIscMULZRYQTo7JwiX1HXNXdO6w2DYGKzWnXxxQYhDDpYXRGES+YzKR1k1 492 | qasEmr2kg3Bo2IiQdnkxhlxzTvCEroxBOXd4WwXWROJmFMXcN+OpMOpZIcLYbPdoIkQF1ktcCs4t 493 | 7ADp835hCsY9LreiLtWeiqToqkdM24Qr3Uy33uaGmA8y6U1TkgOwiF68QOmkbQYPh0tklBvwu9IL 494 | mmRv0U58jec7vWGQKjbV3BhJgBebInInFmIye0vvt06w9mfZ3gUEivc3UR3iDFy7wE9FInuflk3I 495 | DiGi8eP+6pDFWDoCD/fHR89Xs5wpNuWx2qaztz7b8lQnEwJsSKG96KdN4mdBdciROOTAfezhNlI1 496 | hgDT2bxBISzumBSRxxQoCEBd1PDXkA8nfwQcMgjC8gLTy9iTMS5iHtTy8+TTtJXcSPYVZvulg9ya 497 | J0G0JPougdb5sIanwwYc9MhoTLRQhuRDHrYHmHNcvcCGqOvJpJOPovc7dyV4Iek8crBAbjGXNHGg 498 | 9kUyXhVhpMgwYxVmx/gZQ7IVcOiPKDM5VOjw5k545mJmw0WuRO2rKxrJaRHzYFHKcw== 499 | 500 | 501 | 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 543 | j4og6B8= 544 | 545 | 546 | 547 | -------------------------------------------------------------------------------- /operators/sentry/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const sentry: IOperator = { 4 | name: "Sentry", 5 | role: "Defender", 6 | org: "ROS", 7 | squad: "none", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "u", 15 | country: "none", 16 | season: "Y9S2", 17 | height: 0, 18 | weight: 0, 19 | }, 20 | bio: { 21 | real_name: "Undefined", 22 | birthplace: "Undefined", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/sentry/sentry.svg: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 12 | 15 | 16 | 17 | 18 | 19 | 23 | 24 | 25 | 26 | 27 | 30 | 33 | 36 | 37 | 38 | 41 | 46 | 49 | 54 | 55 | 56 | 57 | 60 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /operators/skopos/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const skopos: IOperator = { 4 | name: "Skopós", 5 | role: "Defender", 6 | org: "EKAM", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "gr", 16 | season: "Y9S3", 17 | height: 167, 18 | weight: 55, 19 | }, 20 | bio: { 21 | real_name: "Kure Galanos", 22 | birthplace: "Nicosia, Cyprus", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/skopos/skopos.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 19 | 26 | 30 | 31 | 34 | 38 | 42 | 44 | 48 | 52 | 53 | 57 | 61 | 65 | 66 | 70 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /operators/sledge/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const sledge: IOperator = { 4 | name: "Sledge", 5 | role: "Attacker", 6 | org: "SAS", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "uk", 16 | season: "Release", 17 | height: 192, 18 | weight: 95, 19 | }, 20 | bio: { 21 | real_name: "Seamus Cowden", 22 | birthplace: "John O’groats, Scotland", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/smoke/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const smoke: IOperator = { 4 | name: "Smoke", 5 | role: "Defender", 6 | org: "SAS", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "uk", 16 | season: "Release", 17 | height: 193, 18 | weight: 95, 19 | }, 20 | bio: { 21 | real_name: "James Porter", 22 | birthplace: "London, England", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/solis/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const solis: IOperator = { 4 | name: "Solis", 5 | role: "Defender", 6 | org: "AFEAU", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "co", 16 | season: "Y7S4", 17 | height: 166, 18 | weight: 65, 19 | }, 20 | bio: { 21 | real_name: "Ana Valentina Díaz", 22 | birthplace: "Zipaquirå, Colombia", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/striker/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const striker: IOperator = { 4 | name: "Striker", 5 | role: "Attacker", 6 | org: "ROS", 7 | squad: "none", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "u", 15 | country: "none", 16 | season: "Y9S2", 17 | height: 0, 18 | weight: 0, 19 | }, 20 | bio: { 21 | real_name: "Undefined", 22 | birthplace: "Undefined", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/striker/striker.svg: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 14 | 18 | 22 | 23 | 24 | 28 | 32 | 33 | 34 | 35 | 38 | 39 | 42 | 45 | 46 | 49 | 52 | 55 | 58 | 61 | 64 | 65 | 66 | 69 | 74 | 78 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /operators/tachanka/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const tachanka: IOperator = { 4 | name: "Tachanka", 5 | role: "Defender", 6 | org: "SPETSNAZ", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "ru", 16 | season: "Release", 17 | height: 183, 18 | weight: 86, 19 | }, 20 | bio: { 21 | real_name: "Alexandr Senaviev", 22 | birthplace: "Saint Petersburg, Russia", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/thatcher/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const thatcher: IOperator = { 4 | name: "Thatcher", 5 | role: "Attacker", 6 | org: "SAS", 7 | squad: "VIPERSTRIKE", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "uk", 16 | season: "Release", 17 | height: 180, 18 | weight: 72, 19 | }, 20 | bio: { 21 | real_name: "Mike Baker", 22 | birthplace: "Bideford, England", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/thermite/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const thermite: IOperator = { 4 | name: "Thermite", 5 | role: "Attacker", 6 | org: "FBI SWAT", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "us", 16 | season: "Release", 17 | height: 178, 18 | weight: 80, 19 | }, 20 | bio: { 21 | real_name: "Jordan Trace", 22 | birthplace: "Plano, U.S.A", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/thorn/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const thorn: IOperator = { 4 | name: "Thorn", 5 | role: "Defender", 6 | org: "EMERGENCY RESPONSE UNIT", 7 | squad: "REDHAMMER", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "ie", 16 | season: "Y6S4", 17 | height: 188, 18 | weight: 78, 19 | }, 20 | bio: { 21 | real_name: "Brianna Skehan", 22 | birthplace: "County Kildare, Ireland", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/thunderbird/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const thunderbird: IOperator = { 4 | name: "Thunderbird", 5 | role: "Defender", 6 | org: "STAR-NET AVIATION", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "ca", 16 | season: "Y6S2", 17 | height: 172, 18 | weight: 70, 19 | }, 20 | bio: { 21 | real_name: "Mina Sky", 22 | birthplace: "Nakoda Territories, Canada", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/tubarao/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const tubarao: IOperator = { 4 | name: "Tubarão", 5 | role: "Defender", 6 | org: "DAE", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "u", 15 | country: "pt", 16 | season: "Y8S4", 17 | height: 173, 18 | weight: 69, 19 | }, 20 | bio: { 21 | real_name: "Isaac Nunes Oliveira", 22 | birthplace: "Ponta Delgada, Portugal", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/tubarao/tubarao.svg: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 20 | 21 | 24 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /operators/twitch/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const twitch: IOperator = { 4 | name: "Twitch", 5 | role: "Attacker", 6 | org: "GIGN", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "fr", 16 | season: "Release", 17 | height: 168, 18 | weight: 58, 19 | }, 20 | bio: { 21 | real_name: "Emmanuelle Pichon", 22 | birthplace: "Nancy, France", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/valkyrie/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const valkyrie: IOperator = { 4 | name: "Valkyrie", 5 | role: "Defender", 6 | org: "NAVY SEALS", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "us", 16 | season: "Y1S2", 17 | height: 170, 18 | weight: 61, 19 | }, 20 | bio: { 21 | real_name: "Meghan J. Castellano", 22 | birthplace: "Oceanside, U.S.A", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/vigil/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const vigil: IOperator = { 4 | name: "Vigil", 5 | role: "Defender", 6 | org: "707th SMB", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 3, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "sk", 16 | season: "Y2S4", 17 | height: 173, 18 | weight: 73, 19 | }, 20 | bio: { 21 | real_name: "Chul Kyung Hwa", 22 | birthplace: "[REDACTED]", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/wamai/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const wamai: IOperator = { 4 | name: "Wamai", 5 | role: "Defender", 6 | org: "NIGHTHAVEN", 7 | squad: "NIGHTHAVEN", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "ke", 16 | season: "Y4S4", 17 | height: 187, 18 | weight: 83, 19 | }, 20 | bio: { 21 | real_name: "Ngũgĩ Muchoki Furaha", 22 | birthplace: "Lamu, Kenya", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/warden/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const warden: IOperator = { 4 | name: "Warden", 5 | role: "Defender", 6 | org: "SECRET SERVICE", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "us", 16 | season: "Y4S2", 17 | height: 183, 18 | weight: 80, 19 | }, 20 | bio: { 21 | real_name: "Collinn McKinley", 22 | birthplace: "Louisville, U.S.A", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/warden/warden.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ]> 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 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 123 | 124 | 125 | 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 197 | 198 | 199 | GN7Bw3518LBfCwgFp0ZBgeiQ9gUEDALG9KpMJpPphEBYLBYvjcKgi1LpVFIcRqeDy2BVy2A1lMGq 200 | JnBNGM8xaqhSdaFKVQ6N45Uk3cChcRqcBVmSdAKIhNM5tLC22ZvZpi/8RG2zNzOGCElsZpsEA5Lo 201 | m1ltsyXxAILYeWmNgledKDwD62Em4y2cKHyfQmu4TyFJLInNGONi8K9fUkcFwbIrCJZNe6AsCZav 202 | gmDZlgQDiDItCRYTwbIjYeWgcsArB5VK5YDh+UL91i4zxolwOjYl5kEnS8ICYmxntYSGt3EzlwHa 203 | UElgamJYdLJBIEYy1IUIXw4plJjAZ6IEYuQDq9qLahzMEgtmphSpMQQ8onxKV0u12YrR53XRW+Fi 204 | gBIRIyeAcYEPzKvaqzgIfAg/iN6GX2/jFInf6RkVVR6GTW59holC7GEgKcQeBtTfWP4GNCT0EzRY 205 | EkwqghY0wBSXzmNnaDDMfmQWShNOyoydtVKCKBRlRK0dKTFemgYKKLpiT1o7j2SHhxltdBYaZvSl 206 | USfUCQWzMBl9ofLpVZ1OH8qAvLTIgLwYkFctYWDB0dPJ8WBAdJgXEL7DfmkayqQ4oDw0BiFY8sLi 207 | pb9GCa11TseGL6djozJYLTnaEaa3I8wIY9JQo1NtsspoVJWqOlSlqipVNcdAAJHUJuPCT/TaZks2 208 | sw1f+Im+4WzJZrY5cLakRvuJDm+2pOF7DE7xGJzijYWCEac4Q2JhSLyN02QWnOIZ16M6wWYYnyg8 209 | IYk36WF+m5SBwWb8khju+doRBuO1Cb6RxOaHgV2K63lwjIuBOYBLGcb1XQhAl/RSOx1SiwFjfpdO 210 | e6A67YEyP0sC5puWCoJl0x4oywFEWRIssEt5HygaimBpH6iIw3FYON7J6diKkPnNFCFTBGI8FC7t 211 | yVS11zAAOqgIkKv2AXfpsQ+vKqPQPAwCpRGBYEBsAht3AVk8T4WlNAFuDO7U141h9YV1KiylqXHa 212 | qQFSGLZxr8qu6UsSu98lWJLg+PXe+ZdgR3ZOkmBX8o1jRd5xcpO9I3f2m+ftu17ykiSzBsWS9Fl3 213 | Jc+621l3nfNyk+XvvBz5SIqlF0lS/F7zUhQ53+Tfpddbf06S5PjZbhRz553fPIse7Mgxi30cd5lL 214 | cuPYrntRzHx3exzHcvNd5s+7rXf+e3My6xHkZN7i75qPG+SdJnnmnG+ee0f63MXMe0duEvTjOGZS 215 | 7478pJh/uXEsWWZdbhzbiSTPIu+6OOay9957Lj3reSbHLeZPkqL3Po+7Izu4cWxXbk+W2fvOZ/Hz 216 | EkTH3fn/W/Re9zx+sovl76Xee8z6b1xHLDeu03X655vcpSZJkiRzucmf/y7LTe6tyXIcx50378py 217 | 7GMWS7DzfJek1qUXRVHMI+8891zM+oNdH/XvWn/OOSfz7l0f/dbjuP3nm+fxk13knZf9k+M4jmMu 218 | /Rd7z7rsuN6d3ySpPznuPZbcdz2Wu+SdczL/L/bS5/KD3e5e/F3UXtRl9nqLfGue/wc7sYviJ0fu 219 | x3HMX/9Rb87JcSzz/+DGtXzWXxR976PX3edy7+6PovddHMWyFPPWG+y21yQneefl2Hn5d9fi/l3M 220 | XG+yfzF3vcGOLMvSd69L//vumveuv/ZazGUJduW4SbGXY0n+kfP/xy1yvXvZcydB7/Woyc7L0oNd 221 | 2bn4/Sj2cZOj+PPfYEdy3X25x71L78Xyj+O4f/5749A/juTXnpPfd7z0m49f9Locs96lJ8Xduc4i 222 | 2X3vOVmOeu+x5793N/YuiqL3Iqn/z2W5cWjXP/fkJsct6lzy0v+S1Lr3vr/oee58d2InSf615mTX 223 | uevdjbv/T+6SFPnP5N4d1+P+feS/3LhWR4q6/KIvy7Lv3PfufO+91Hnr3XlR3J38X4t8Z71317XP 224 | Wu+O5Jx37z8pcp293t0ueVmKnuycb5//3zi08913vsUt6v3FURzJ0pea5D+XX/yjuEWR5Lv/vv3P 225 | /3d8e5HsmxS71pnrL5L8j578Wc/KrUXdAfWepW8aiqA8uUtRLDPadz3ygpGfXjVu1VWArOWyXeu9 226 | e+fp60prBGy6xmur0aKt0gaQXCubBmg1DAgErq2uVPSq7euiEMirsq42zUAgaoC1A4GsaRq3VBEE 227 | sqYMlbdxFpOohKrOUOjkqEYaVYZ0hjob1xlAO7u9TQFQ9z2La6BPdt5z3hH/6DXY8Y7rTWqtNye/ 228 | /rwjuf6adHSND2PjOqJYbtys43qDnc9j/yRIedW27T7ZfbLr8XuqdAfpKppSx3MKLW2na8Cqa61h 229 | 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 271 | 272 | 273 | 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 345 | 346 | 347 | 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 419 | 420 | 421 | 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 493 | 494 | 495 | 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 545 | r5iFi96URDeEL+hF4xIbNRcWOw== 546 | 547 | 548 | 549 | -------------------------------------------------------------------------------- /operators/ying/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const ying: IOperator = { 4 | name: "Ying", 5 | role: "Attacker", 6 | org: "SDU", 7 | squad: "WOLFGUARD", 8 | ratings: { 9 | health: 2, 10 | speed: 2, 11 | difficulty: 2, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "hk", 16 | season: "Y2S3", 17 | height: 160, 18 | weight: 52, 19 | }, 20 | bio: { 21 | real_name: "Siu Mei Lin", 22 | birthplace: "Central, Hong Kong", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/zero/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const zero: IOperator = { 4 | name: "Zero", 5 | role: "Attacker", 6 | org: "ROS", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 1, 10 | speed: 3, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "m", 15 | country: "us", 16 | season: "Y5S3", 17 | height: 178, 18 | weight: 77, 19 | }, 20 | bio: { 21 | real_name: "Samuel Leo Fisher", 22 | birthplace: "Baltimore, U.S.A", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /operators/zofia/index.ts: -------------------------------------------------------------------------------- 1 | import { IOperator } from "~/types/operator" 2 | 3 | export const zofia: IOperator = { 4 | name: "Zofia", 5 | role: "Attacker", 6 | org: "GROM", 7 | squad: "GHOSTEYES", 8 | ratings: { 9 | health: 3, 10 | speed: 1, 11 | difficulty: 1, 12 | }, 13 | meta: { 14 | gender: "f", 15 | country: "pl", 16 | season: "Y2S4", 17 | height: 179, 18 | weight: 72, 19 | }, 20 | bio: { 21 | real_name: "Zofia Bosak", 22 | birthplace: "Wroclaw, Poland", 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "r6operators", 3 | "version": "2.11.1", 4 | "description": "r6operators is a collection of high-quality vectorized Rainbow Six: Siege Operator icons & metadata for Node.js", 5 | "keywords": [ 6 | "rainbow six siege", 7 | "r6", 8 | "R6S", 9 | "siege", 10 | "operator", 11 | "icon", 12 | "ubisoft", 13 | "rainbow6" 14 | ], 15 | "homepage": "https://r6operators.marcopixel.eu/", 16 | "bugs": "https://github.com/marcopixel/r6operators/issues", 17 | "repository": { 18 | "type": "git", 19 | "url": "https://github.com/marcopixel/r6operators.git" 20 | }, 21 | "license": "MIT", 22 | "author": "Marco Vockner ", 23 | "contributors": [ 24 | "dtSniper (https://twitter.com/sniperdt)", 25 | "Joey Foo (https://github.com/joeyfoo)", 26 | "Lars Brix (https://github.com/LaxisB)" 27 | ], 28 | "main": "dist/index.js", 29 | "module": "dist/index.mjs", 30 | "types": "dist/index.d.ts", 31 | "files": [ 32 | "dist" 33 | ], 34 | "scripts": { 35 | "clean": "ts-node ./scripts/clean.ts", 36 | "build": "npm run clean && ts-node ./scripts/build.ts", 37 | "test": "jest", 38 | "lint": "eslint **/*.{js,ts} --ignore-path .gitignore", 39 | "format": "prettier **/* --ignore-path .gitignore --check --write", 40 | "prepare": "husky" 41 | }, 42 | "dependencies": { 43 | "clsx": "^2.0.0" 44 | }, 45 | "devDependencies": { 46 | "@babel/core": "^7.18.5", 47 | "@babel/plugin-transform-runtime": "^7.18.5", 48 | "@babel/preset-env": "^7.18.2", 49 | "@babel/preset-typescript": "^7.17.12", 50 | "@babel/runtime": "^7.18.3", 51 | "@rollup/plugin-node-resolve": "^15.0.1", 52 | "@types/jest": "^29.2.4", 53 | "@types/node": "^22.5.5", 54 | "@typescript-eslint/eslint-plugin": "^8.6.0", 55 | "@typescript-eslint/parser": "^8.6.0", 56 | "cheerio": "^1.0.0-rc.10", 57 | "dts-bundle-generator": "^9.3.1", 58 | "eslint": "^8.3.0", 59 | "eslint-config-prettier": "^9.0.0", 60 | "eslint-plugin-unicorn": "^55.0.0", 61 | "husky": "^9.0.11", 62 | "jest": "^29.3.1", 63 | "lint-staged": "^15.1.0", 64 | "micromatch": "^4.0.4", 65 | "prettier": "^3.0.3", 66 | "rollup": "^3.29.5", 67 | "rollup-plugin-analyzer": "^4.0.0", 68 | "rollup-plugin-ts": "^3.0.2", 69 | "stringify-object": "^3.3.0", 70 | "svgo": "^3.0.2", 71 | "ts-jest": "^29.0.3", 72 | "ts-node": "^10.2.1", 73 | "tsconfig-paths": "^4.0.0", 74 | "typescript": "^5.0.4" 75 | }, 76 | "browserslist": [ 77 | "defaults" 78 | ], 79 | "lint-staged": { 80 | "*.js": "eslint --cache --fix", 81 | "*.--write": "prettier --write" 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /scripts/build-icon-modules.ts: -------------------------------------------------------------------------------- 1 | import path from "path" 2 | import * as cheerio from "cheerio" 3 | import stringifyObject from "stringify-object" 4 | import { promises as fs } from "fs" 5 | 6 | import * as ops from "@operators/index" 7 | import { CURRENT_SEASON, OPS_DIR, TEMP_DIR } from "./config" 8 | 9 | const readSVG = async (op: string) => { 10 | // read optimized svg icon 11 | const svgPath = path.resolve(`${TEMP_DIR}/svg/${op}.svg`) 12 | const svg = await fs.readFile(svgPath, "utf8") 13 | 14 | // get attributes + values of the SVG 15 | const $ = cheerio.load(svg) 16 | const attributes = { 17 | ...$("svg").get(0).attribs, 18 | class: `r6operators r6operators-${op}`, 19 | } 20 | 21 | return { 22 | contents: $("svg").html(), 23 | attributes, 24 | } 25 | } 26 | 27 | // thanks to @danielwerg for the getSeasonId + getprice functions 28 | // https://github.com/marcopixel/r6operators/pull/34 29 | const getSeasonId = (shorthand: string) => { 30 | // handle release operators 31 | if (shorthand === "Release") { 32 | return 0 33 | } 34 | 35 | const [year, season] = /Y(\d+)S(\d)/.exec(shorthand)?.slice(1).map(Number) as [number, number] 36 | return year === 0 ? 0 : year * 4 - 4 + season 37 | } 38 | 39 | const getPrice = (seasonId: number, lastSeasonId: number) => { 40 | const ratio = (lastSeasonId - seasonId) / 4 41 | let result = { renown: 0, r6credits: 0 } 42 | switch (Math.floor(ratio)) { 43 | case 0: { 44 | result = { renown: 25000, r6credits: 600 } 45 | break 46 | } 47 | case 1: { 48 | result = { renown: 20000, r6credits: 480 } 49 | break 50 | } 51 | case 2: { 52 | result = { renown: 15000, r6credits: 360 } 53 | break 54 | } 55 | default: { 56 | result = { renown: 10000, r6credits: 240 } 57 | } 58 | } 59 | return seasonId === 0 ? { renown: 1000, r6credits: 0 } : result 60 | } 61 | 62 | // template for the generated .ts file 63 | const template = (op: string, obj: string) => ` 64 | import { getSVGIcon } from "~/functions" 65 | import { Operator } from "~/types/operator" 66 | 67 | export const ${op}: Operator = ${obj} 68 | ` 69 | 70 | export async function buildIconModules(): Promise { 71 | // add counter var 72 | let counter = 0 73 | 74 | // create modules folder if it doesnt exist 75 | await fs.stat(`${TEMP_DIR}/modules`).catch(async () => { 76 | await fs.mkdir(`${TEMP_DIR}/modules`, { recursive: true }) 77 | }) 78 | 79 | const result = Object.keys(ops).map(async (op) => { 80 | // create merged object with icon data & svg data 81 | let seasonId: number 82 | let price: { renown: number; r6credits: number } 83 | 84 | // set season id + price if metadata exists 85 | if (ops[op].meta?.season) { 86 | seasonId = getSeasonId(ops[op].meta.season) 87 | price = getPrice(seasonId, getSeasonId(CURRENT_SEASON)) 88 | } 89 | 90 | // create merged obj 91 | const merged = { 92 | id: op, 93 | ...ops[op], 94 | svg: await readSVG(op), 95 | ...((ops[op].meta || price) && { meta: { ...ops[op].meta, price } }), // check if meta or price exists 96 | toSVG: "", // empty because the function is added with the transform function 97 | } 98 | 99 | // stringify object 100 | const stringified = stringifyObject(merged, { 101 | transform: (obj, property, original) => { 102 | // add escaped function for toSVG 103 | if (property === "toSVG") { 104 | return "function(userAttr){return getSVGIcon(this, userAttr)}" 105 | } 106 | return original 107 | }, 108 | }) 109 | 110 | // write into template 111 | const contents = template(op, stringified) 112 | 113 | // create op folder if it doesnt exist 114 | await fs.stat(`${TEMP_DIR}/modules/${op}`).catch(async () => { 115 | await fs.mkdir(`${TEMP_DIR}/modules/${op}`, { recursive: true }) 116 | }) 117 | 118 | // write file to disk 119 | await fs.writeFile(`${TEMP_DIR}/modules/${op}/index.ts`, contents) 120 | 121 | // iterate counter + output to inform user 122 | counter += 1 123 | console.log(`${counter}/${Object.keys(ops).length} - ${path.normalize(`${op}.ts`)}`) 124 | }) 125 | 126 | // wait for finish 127 | await Promise.all(result) 128 | 129 | // copy index.ts over to temp folder 130 | fs.copyFile(`${OPS_DIR}/index.ts`, `${TEMP_DIR}/modules/index.ts`) 131 | console.log(`Successfully generated ${counter} modules!\n`) 132 | } 133 | -------------------------------------------------------------------------------- /scripts/build-optimized-svg.ts: -------------------------------------------------------------------------------- 1 | import path from "path" 2 | import { promises as fs } from "fs" 3 | import { optimize, Config as OptimizeOptions } from "svgo" 4 | 5 | import * as ops from "@operators/index" 6 | import { OPS_DIR, TEMP_DIR, SVGO_PLUGINS } from "./config" 7 | 8 | export async function buildOptimizedSVG(): Promise { 9 | // add counter var 10 | let counter = 0 11 | 12 | // check if destPath exists 13 | await fs.stat(`${TEMP_DIR}/svg`).catch(async () => { 14 | await fs.mkdir(`${TEMP_DIR}/svg`, { recursive: true }) 15 | }) 16 | 17 | const result = Object.keys(ops).map(async (op) => { 18 | // read file to get SVG data 19 | const svgPath = path.resolve(`${OPS_DIR}/${op}/${op}.svg`) 20 | const sourceFile = await fs.readFile(svgPath, "utf8") 21 | 22 | // iterate counter + output to inform user 23 | counter += 1 24 | console.log( 25 | `${counter}/${Object.keys(ops).length} - ${path.normalize(`${TEMP_DIR}/svg/${op}.svg`)}`, 26 | ) 27 | 28 | // optimize svg with svgo 29 | const svgoConfig: OptimizeOptions = { 30 | plugins: [ 31 | // override default preset 32 | "preset-default", 33 | // enable plugins 34 | ...SVGO_PLUGINS, 35 | { 36 | name: "prefixIds", 37 | params: { prefix: `${op}-` }, 38 | }, 39 | ], 40 | } 41 | const optimized = optimize(sourceFile, { multipass: true, path: `${op}.svg`, ...svgoConfig }) 42 | 43 | // write optimized icon to disk 44 | await fs.writeFile(`${TEMP_DIR}/svg/${op}.svg`, optimized.data) 45 | }) 46 | 47 | // wait for Promises + merge objects together 48 | await Promise.all(result) 49 | console.log(`Successfully optimized ${counter} icons!\n`) 50 | } 51 | -------------------------------------------------------------------------------- /scripts/build-rollup.ts: -------------------------------------------------------------------------------- 1 | import { promises as fs } from "fs" 2 | import { rollup } from "rollup" 3 | 4 | import ts from "rollup-plugin-ts" 5 | import analyze from "rollup-plugin-analyzer" 6 | import { nodeResolve } from "@rollup/plugin-node-resolve" 7 | import { generateDtsBundle } from "dts-bundle-generator" 8 | 9 | import pkg from "../package.json" 10 | import { ENTRY_FILE, DIST_DIR } from "./config" 11 | 12 | // build ts 13 | export async function buildBundle(): Promise { 14 | // Track iterations over output files 15 | let analyzePluginIterations = 0 16 | 17 | const bundle = await rollup({ 18 | input: ENTRY_FILE, 19 | plugins: [ 20 | nodeResolve(), 21 | ts({ transpiler: "babel" }), 22 | analyze({ 23 | summaryOnly: true, 24 | onAnalysis: () => { 25 | if (analyzePluginIterations > 0) { 26 | throw "" // We only want reports on the first output 27 | } 28 | analyzePluginIterations++ 29 | }, 30 | }), 31 | ], 32 | }) 33 | 34 | await bundle.write({ 35 | file: pkg.main, 36 | format: "cjs", 37 | sourcemap: true, 38 | exports: "named", 39 | }) 40 | await bundle.write({ 41 | file: pkg.module, 42 | format: "esm", 43 | sourcemap: true, 44 | exports: "named", 45 | }) 46 | console.log(`\nSuccessfully bundled library!\n`) 47 | } 48 | 49 | // build type declarations 50 | export async function buildDts(): Promise { 51 | const bundle = generateDtsBundle([{ filePath: ENTRY_FILE, output: { umdModuleName: pkg.name } }]) 52 | 53 | // check if folder exists and create if not 54 | await fs.stat(`${DIST_DIR}`).catch(async () => { 55 | await fs.mkdir(`${DIST_DIR}`, { recursive: true }) 56 | }) 57 | 58 | // write bundle to file 59 | await fs.writeFile(`${DIST_DIR}/index.d.ts`, bundle.toString()) 60 | 61 | console.log(`Successfully created type declarations!\n`) 62 | } 63 | -------------------------------------------------------------------------------- /scripts/build.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable unicorn/prefer-top-level-await */ 2 | /* eslint-disable unicorn/no-process-exit */ 3 | import { copyDir } from "./util" 4 | import { TEMP_DIR, DIST_DIR } from "./config" 5 | import { buildOptimizedSVG } from "./build-optimized-svg" 6 | import { buildIconModules } from "./build-icon-modules" 7 | import { buildBundle, buildDts } from "./build-rollup" 8 | 9 | async function main(): Promise { 10 | console.log("Optimize SVG files...\n") 11 | await buildOptimizedSVG() 12 | 13 | console.log("Build icon modules...\n") 14 | await buildIconModules() 15 | 16 | console.log("Bundle TS files with Rollup...\n") 17 | await buildBundle() 18 | 19 | console.log("Create type declarations...\n") 20 | await buildDts() 21 | 22 | console.log("Copy optimized SVG into /dist folder...\n") 23 | await copyDir(`${TEMP_DIR}/svg/`, `${DIST_DIR}/icons/`) 24 | 25 | console.log("Finished!") 26 | } 27 | 28 | main().catch((error) => { 29 | console.log(error) 30 | process.exit(1) 31 | }) 32 | -------------------------------------------------------------------------------- /scripts/clean.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable unicorn/prefer-top-level-await */ 2 | /* eslint-disable unicorn/no-process-exit */ 3 | import { promises as fs } from "fs" 4 | import { DIST_DIR, TEMP_DIR } from "./config" 5 | 6 | async function main(): Promise { 7 | await fs.rm(DIST_DIR, { recursive: true, force: true }) 8 | await fs.rm(TEMP_DIR, { recursive: true, force: true }) 9 | console.log("Cleanup finished!") 10 | } 11 | 12 | main().catch((error) => { 13 | console.log(error) 14 | process.exit(1) 15 | }) 16 | -------------------------------------------------------------------------------- /scripts/config.ts: -------------------------------------------------------------------------------- 1 | import path from "path" 2 | import { PluginConfig } from "svgo" 3 | 4 | const OPS_DIR = path.resolve(`./operators`) 5 | const TEMP_DIR = path.resolve(`./temp`) 6 | const DIST_DIR = path.resolve(`./dist`) 7 | 8 | const ENTRY_FILE = path.resolve("./src/index.ts") 9 | const DECLARATION_FILE = path.resolve("./src/types/index.d.ts") 10 | 11 | const CURRENT_SEASON = "Y10S1" 12 | 13 | const SVGO_PLUGINS: PluginConfig[] = [ 14 | // "cleanupIDs" plugin is added at the build-optimized-svg script directly 15 | // to prevent gradient id clash (it will add the operator id as prefix) 16 | "removeDoctype", 17 | "removeXMLProcInst", 18 | "removeComments", 19 | "removeMetadata", 20 | "removeEditorsNSData", 21 | "cleanupAttrs", 22 | "mergeStyles", 23 | "inlineStyles", 24 | "minifyStyles", 25 | "cleanupIds", 26 | "removeUselessDefs", 27 | "cleanupNumericValues", 28 | "convertColors", 29 | "removeUnknownsAndDefaults", 30 | "removeNonInheritableGroupAttrs", 31 | "removeUselessStrokeAndFill", 32 | "removeViewBox", 33 | "cleanupEnableBackground", 34 | "removeHiddenElems", 35 | "removeEmptyText", 36 | "convertShapeToPath", 37 | "convertEllipseToCircle", 38 | "moveElemsAttrsToGroup", 39 | "moveGroupAttrsToElems", 40 | "collapseGroups", 41 | "convertPathData", 42 | "convertTransform", 43 | "removeEmptyAttrs", 44 | "removeEmptyContainers", 45 | "mergePaths", 46 | "removeUnusedNS", 47 | "sortDefsChildren", 48 | "removeTitle", 49 | "removeDesc", 50 | "removeDimensions", 51 | ] 52 | 53 | export { OPS_DIR, TEMP_DIR, DIST_DIR, ENTRY_FILE, DECLARATION_FILE, CURRENT_SEASON, SVGO_PLUGINS } 54 | -------------------------------------------------------------------------------- /scripts/util/copy-dir.ts: -------------------------------------------------------------------------------- 1 | import { promises as fs } from "fs" 2 | import path from "path" 3 | 4 | export async function copyDir(src: string, dest: string) { 5 | await fs.mkdir(dest, { recursive: true }) 6 | const entries = await fs.readdir(src, { withFileTypes: true }) 7 | 8 | for (const entry of entries) { 9 | const srcPath = path.join(src, entry.name) 10 | const destPath = path.join(dest, entry.name) 11 | 12 | await (entry.isDirectory() ? copyDir(srcPath, destPath) : fs.copyFile(srcPath, destPath)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /scripts/util/index.ts: -------------------------------------------------------------------------------- 1 | export { copyDir } from "./copy-dir" 2 | -------------------------------------------------------------------------------- /src/_tests_/__snapshots__/functions.test.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`toSVG() returns correct string 1`] = `""`; 4 | 5 | exports[`toSVG() returns correct string 2`] = `""`; 6 | 7 | exports[`toSVG() returns correct string 3`] = `""`; 8 | -------------------------------------------------------------------------------- /src/_tests_/functions.test.ts: -------------------------------------------------------------------------------- 1 | import r6operators from "~/index" 2 | import { getSVGIcon } from "~/functions" 3 | 4 | import * as ops from "@temp/modules/index" 5 | 6 | it("toSVG() returns correct string", () => { 7 | // overwrite svg contents with example string 8 | const op = r6operators.ace 9 | op.svg.contents = "" 10 | 11 | expect(op.toSVG()).toMatchSnapshot() 12 | expect(op.toSVG({ "stroke-width": 1, color: "red" })).toMatchSnapshot() 13 | expect(op.toSVG({ class: "foo bar", color: "green" })).toMatchSnapshot() 14 | }) 15 | 16 | it("toSVG() returns same output as getSVGIcon()", () => { 17 | Object.keys(ops).map((op) => { 18 | const exampleAttributes = { class: "test", "stroke-width": 1 } 19 | // overwrite svg contents with example string 20 | r6operators[op].svg.contents = 21 | "" 22 | 23 | // test each operator 24 | const objFunc = r6operators[op].toSVG(exampleAttributes) 25 | const namedFunc = getSVGIcon(r6operators[op], exampleAttributes) 26 | expect(objFunc as string).toMatch(namedFunc as string) 27 | }) 28 | }) 29 | -------------------------------------------------------------------------------- /src/_tests_/index.test.ts: -------------------------------------------------------------------------------- 1 | import r6operators from "~/index" 2 | import * as ops from "@operators/index" 3 | 4 | test("returns all operators as default export", () => { 5 | Object.keys(ops).map((op) => { 6 | expect(r6operators).toHaveProperty(op) 7 | }) 8 | }) 9 | 10 | test("exports extended object", () => { 11 | expect(r6operators.alibi).toMatchObject({ 12 | ...ops.alibi, 13 | id: "alibi", 14 | svg: { 15 | contents: expect.any(String), 16 | }, 17 | toSVG: expect.any(Function), 18 | }) 19 | }) 20 | -------------------------------------------------------------------------------- /src/functions.ts: -------------------------------------------------------------------------------- 1 | import clsx from "clsx" 2 | import { Operator } from "~/types/operator" 3 | 4 | /** 5 | * Convert attributes object to string of HTML attributes. 6 | * @param {Object} attributes - Object containing the attributes. 7 | */ 8 | function attributesToString(attributes: Record): string { 9 | return Object.keys(attributes) 10 | .map((key) => `${key}="${attributes[key]}"`) 11 | .join(" ") 12 | } 13 | /** 14 | * Returns the icon from the operator object as an SVG string. 15 | * @param op Object containing operator object. 16 | * @param userAttributes Object containing additional element attributes. 17 | * @returns String containing the SVG element. 18 | */ 19 | export function getSVGIcon( 20 | op: Operator, 21 | userAttributes?: { [key: string]: unknown }, 22 | ): string | Error { 23 | // check if parameter is an object 24 | if (userAttributes && typeof userAttributes !== "object") { 25 | return new TypeError("The parameter `userAttributes` is either missing or invalid.") 26 | } 27 | 28 | // check if parameter is an object 29 | if (op && !op.svg && !op.svg.attributes && !op.svg.contents) { 30 | return new TypeError("The parameter `op` is either missing or invalid.") 31 | } 32 | 33 | // create an object containing all attributes from the icon + user attributes 34 | const combinedAttributes = { 35 | ...op.svg.attributes, 36 | ...userAttributes, 37 | class: clsx(op.svg.attributes.class, userAttributes === undefined ? "" : userAttributes.class), 38 | } 39 | 40 | // return as a SVG string 41 | return `${op.svg.contents}` 42 | } 43 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import * as ops from "@temp/modules" 2 | 3 | export * from "@temp/modules" 4 | export { getSVGIcon } from "./functions" 5 | export default { ...ops } 6 | -------------------------------------------------------------------------------- /src/template.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcopixel/r6operators/ba362bb004594cc80f24ee3c069a6b926b367d87/src/template.ai -------------------------------------------------------------------------------- /src/types/operator.d.ts: -------------------------------------------------------------------------------- 1 | export interface IOperator { 2 | /** Readable name of the operator */ 3 | name: string 4 | /** Role of the operator. 5 | * 6 | * Possible values are `Attacker`, `Defender` or `Recruit` 7 | */ 8 | role: "Attacker" | "Defender" | "Recruit" 9 | /** Operator organisation name */ 10 | org: string 11 | /** Operator squad name */ 12 | squad: string 13 | /** Object containing the health, speed and difficulty ratings. */ 14 | ratings?: IOperatorRatings 15 | /** Object containing metadata of the operator. */ 16 | meta?: IOperatorMeta 17 | /** Object containing biography of the operator. */ 18 | bio?: IOperatorBio 19 | } 20 | 21 | interface IOperatorRatings { 22 | /** Health rating as a number between `1` and `3` */ 23 | health: number 24 | /** Speed rating as a number between `1` and `3` */ 25 | speed: number 26 | /** Difficulty rating as a number between `1` and `3` */ 27 | difficulty: number 28 | } 29 | 30 | interface IOperatorMeta { 31 | /** Gender of the operator. 32 | * 33 | * Possible values are: 34 | * ``` 35 | * 'm' - Male 36 | * 'f' - Female 37 | * 'o' - Other 38 | * 'n' - None/Not applicable 39 | * 'u' - Unknown 40 | * ``` 41 | */ 42 | gender: "m" | "f" | "o" | "n" | "u" 43 | /** Country of the operator as a ISO 3166-1 alpha-2 code (two-letter). 44 | * @link https://wikipedia.org/wiki/ISO_3166-1_alpha-2 45 | */ 46 | country: string 47 | /** Season shorthandle when the operator was first introduced to the game. 48 | * 49 | * As example, `Y1S1` for Year 1 Season 1. 50 | */ 51 | season: string 52 | /** Height of the operator, in cm. */ 53 | height: number 54 | /** Weight of the operator, in kg. */ 55 | weight: number 56 | /** Object containing unlock prices for operators */ 57 | price?: { 58 | /** Renown unlock price for operator. */ 59 | renown: 25000 | 20000 | 15000 | 10000 | 1000 60 | /** R6 Credits unlock price for operator. */ 61 | r6credits: 600 | 480 | 360 | 240 | 0 62 | } 63 | } 64 | 65 | interface IOperatorBio { 66 | /** Real name of the operator. */ 67 | real_name: string 68 | /** Birthplace of the operator, including the country.*/ 69 | birthplace: string 70 | } 71 | 72 | export interface Operator extends IOperator { 73 | /** ID of the operator. */ 74 | id: string 75 | 76 | /** SVG icon object. */ 77 | svg: { 78 | /** SVG contents without HTML tags. */ 79 | contents: string 80 | /** SVG attributes as an object. */ 81 | attributes: { 82 | [key: string]: unknown 83 | } 84 | } 85 | /** 86 | * Returns the current icon as an SVG string. 87 | * @param userAttributes Object containing additional element attributes. 88 | * @returns String containing the SVG element. 89 | */ 90 | toSVG(userAttributes?: Record): string | Error 91 | } 92 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "ESNext", 5 | "lib": ["ESNext"], 6 | "moduleResolution": "node", 7 | "sourceMap": true, 8 | "resolveJsonModule": true, 9 | "esModuleInterop": true, 10 | "rootDir": ".", 11 | "baseUrl": ".", 12 | "paths": { 13 | "~/*": ["./src/*"], 14 | "@operators/*": ["./operators/*"], 15 | "@temp/*": ["./temp/*"] 16 | } 17 | }, 18 | "ts-node": { 19 | "require": ["tsconfig-paths/register"], 20 | "files": true 21 | } 22 | } 23 | --------------------------------------------------------------------------------