diff --git a/package-lock.json b/package-lock.json
index 8203a43f..ef179c0e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,8 +14,8 @@
"@fortawesome/free-brands-svg-icons": "^6.6.0",
"@fortawesome/free-solid-svg-icons": "^6.6.0",
"@fortawesome/react-fontawesome": "^0.2.2",
- "@mui/icons-material": "^5.8.4",
- "@mui/material": "^5.8.4",
+ "@mui/icons-material": "^6.1.10",
+ "@mui/material": "^6.1.10",
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.2.0",
"@testing-library/user-event": "^13.5.0",
@@ -1759,10 +1759,12 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.18.0",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
"license": "MIT",
"dependencies": {
- "regenerator-runtime": "^0.13.4"
+ "regenerator-runtime": "^0.14.0"
},
"engines": {
"node": ">=6.9.0"
@@ -1779,6 +1781,12 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+ "license": "MIT"
+ },
"node_modules/@babel/template": {
"version": "7.25.0",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
@@ -2083,16 +2091,36 @@
}
},
"node_modules/@emotion/cache": {
- "version": "11.9.3",
+ "version": "11.13.5",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.5.tgz",
+ "integrity": "sha512-Z3xbtJ+UcK76eWkagZ1onvn/wAVb1GOMuR15s30Fm2wrMgC7jzpnO2JZXr4eujTTqoQFUrZIw/rT0c6Zzjca1g==",
"license": "MIT",
"dependencies": {
- "@emotion/memoize": "^0.7.4",
- "@emotion/sheet": "^1.1.1",
- "@emotion/utils": "^1.0.0",
- "@emotion/weak-memoize": "^0.2.5",
- "stylis": "4.0.13"
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.2",
+ "@emotion/weak-memoize": "^0.4.0",
+ "stylis": "4.2.0"
}
},
+ "node_modules/@emotion/cache/node_modules/@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/cache/node_modules/@emotion/weak-memoize": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/cache/node_modules/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==",
+ "license": "MIT"
+ },
"node_modules/@emotion/hash": {
"version": "0.8.0",
"license": "MIT"
@@ -2134,18 +2162,40 @@
}
},
"node_modules/@emotion/serialize": {
- "version": "1.0.4",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz",
+ "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==",
"license": "MIT",
"dependencies": {
- "@emotion/hash": "^0.8.0",
- "@emotion/memoize": "^0.7.4",
- "@emotion/unitless": "^0.7.5",
- "@emotion/utils": "^1.0.0",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.10.0",
+ "@emotion/utils": "^1.4.2",
"csstype": "^3.0.2"
}
},
+ "node_modules/@emotion/serialize/node_modules/@emotion/hash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
+ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/serialize/node_modules/@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/serialize/node_modules/@emotion/unitless": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==",
+ "license": "MIT"
+ },
"node_modules/@emotion/sheet": {
- "version": "1.1.1",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
+ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==",
"license": "MIT"
},
"node_modules/@emotion/styled": {
@@ -2181,7 +2231,9 @@
"license": "MIT"
},
"node_modules/@emotion/utils": {
- "version": "1.1.0",
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz",
+ "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==",
"license": "MIT"
},
"node_modules/@emotion/weak-memoize": {
@@ -3001,54 +3053,35 @@
"version": "2.0.4",
"license": "MIT"
},
- "node_modules/@mui/base": {
- "version": "5.0.0-alpha.85",
+ "node_modules/@mui/core-downloads-tracker": {
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.10.tgz",
+ "integrity": "sha512-LY5wdiLCBDY7u+Od8UmFINZFGN/5ZU90fhAslf/ZtfP+5RhuY45f679pqYIxe0y54l6Gkv9PFOc8Cs10LDTBYg==",
"license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.17.2",
- "@emotion/is-prop-valid": "^1.1.2",
- "@mui/types": "^7.1.4",
- "@mui/utils": "^5.8.4",
- "@popperjs/core": "^2.11.5",
- "clsx": "^1.1.1",
- "prop-types": "^15.8.1",
- "react-is": "^17.0.2"
- },
- "engines": {
- "node": ">=12.0.0"
- },
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
- },
- "peerDependencies": {
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0",
- "react-dom": "^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
+ "url": "https://opencollective.com/mui-org"
}
},
"node_modules/@mui/icons-material": {
- "version": "5.8.4",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.10.tgz",
+ "integrity": "sha512-G6P1BCSt6EQDcKca47KwvKjlqgOXFbp2I3oWiOlFgKYTANBH89yk7ttMQ5ysqNxSYAB+4TdM37MlPYp4+FkVrQ==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.17.2"
+ "@babel/runtime": "^7.26.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
- "@mui/material": "^5.0.0",
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0"
+ "@mui/material": "^6.1.10",
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -3057,34 +3090,38 @@
}
},
"node_modules/@mui/material": {
- "version": "5.8.4",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.17.2",
- "@mui/base": "5.0.0-alpha.85",
- "@mui/system": "^5.8.4",
- "@mui/types": "^7.1.4",
- "@mui/utils": "^5.8.4",
- "@types/react-transition-group": "^4.4.4",
- "clsx": "^1.1.1",
- "csstype": "^3.1.0",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.10.tgz",
+ "integrity": "sha512-txnwYObY4N9ugv5T2n5h1KcbISegZ6l65w1/7tpSU5OB6MQCU94YkP8n/3slDw2KcEfRk4+4D8EUGfhSPMODEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/core-downloads-tracker": "^6.1.10",
+ "@mui/system": "^6.1.10",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.10",
+ "@popperjs/core": "^2.11.8",
+ "@types/react-transition-group": "^4.4.11",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1",
- "react-is": "^17.0.2",
- "react-transition-group": "^4.4.2"
+ "react-is": "^18.3.1",
+ "react-transition-group": "^4.4.5"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0",
- "react-dom": "^17.0.0 || ^18.0.0"
+ "@mui/material-pigment-css": "^6.1.10",
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@emotion/react": {
@@ -3093,29 +3130,40 @@
"@emotion/styled": {
"optional": true
},
+ "@mui/material-pigment-css": {
+ "optional": true
+ },
"@types/react": {
"optional": true
}
}
},
+ "node_modules/@mui/material/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
"node_modules/@mui/private-theming": {
- "version": "5.8.4",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.10.tgz",
+ "integrity": "sha512-DqgsH0XFEweeG3rQfVkqTkeXcj/E76PGYWag8flbPdV8IYdMo+DfVdFlZK8JEjsaIVD2Eu1kJg972XnH5pfnBQ==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.17.2",
- "@mui/utils": "^5.8.4",
+ "@babel/runtime": "^7.26.0",
+ "@mui/utils": "^6.1.10",
"prop-types": "^15.8.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0"
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -3124,24 +3172,29 @@
}
},
"node_modules/@mui/styled-engine": {
- "version": "5.8.0",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.10.tgz",
+ "integrity": "sha512-+NV9adKZYhslJ270iPjf2yzdVJwav7CIaXcMlPSi1Xy1S/zRe5xFgZ6BEoMdmGRpr34lIahE8H1acXP2myrvRw==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.17.2",
- "@emotion/cache": "^11.7.1",
+ "@babel/runtime": "^7.26.0",
+ "@emotion/cache": "^11.13.5",
+ "@emotion/serialize": "^1.3.3",
+ "@emotion/sheet": "^1.4.0",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
"@emotion/react": "^11.4.1",
"@emotion/styled": "^11.3.0",
- "react": "^17.0.0 || ^18.0.0"
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@emotion/react": {
@@ -3153,30 +3206,32 @@
}
},
"node_modules/@mui/system": {
- "version": "5.8.4",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.17.2",
- "@mui/private-theming": "^5.8.4",
- "@mui/styled-engine": "^5.8.0",
- "@mui/types": "^7.1.4",
- "@mui/utils": "^5.8.4",
- "clsx": "^1.1.1",
- "csstype": "^3.1.0",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.10.tgz",
+ "integrity": "sha512-5YNIqxETR23SIkyP7MY2fFnXmplX/M4wNi2R+10AVRd3Ub+NLctWY/Vs5vq1oAMF0eSDLhRTGUjaUe+IGSfWqg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/private-theming": "^6.1.10",
+ "@mui/styled-engine": "^6.1.10",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.10",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0"
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@emotion/react": {
@@ -3191,10 +3246,12 @@
}
},
"node_modules/@mui/types": {
- "version": "7.1.4",
+ "version": "7.2.19",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.19.tgz",
+ "integrity": "sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==",
"license": "MIT",
"peerDependencies": {
- "@types/react": "*"
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -3203,26 +3260,41 @@
}
},
"node_modules/@mui/utils": {
- "version": "5.8.4",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.10.tgz",
+ "integrity": "sha512-1ETuwswGjUiAf2dP9TkBy8p49qrw2wXa+RuAjNTRE5+91vtXJ1HKrs7H9s8CZd1zDlQVzUcUAPm9lpQwF5ogTw==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.17.2",
- "@types/prop-types": "^15.7.5",
- "@types/react-is": "^16.7.1 || ^17.0.0",
+ "@babel/runtime": "^7.26.0",
+ "@mui/types": "^7.2.19",
+ "@types/prop-types": "^15.7.13",
+ "clsx": "^2.1.1",
"prop-types": "^15.8.1",
- "react-is": "^17.0.2"
+ "react-is": "^18.3.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
- "react": "^17.0.0 || ^18.0.0"
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
+ "node_modules/@mui/utils/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"license": "MIT",
@@ -3301,7 +3373,9 @@
}
},
"node_modules/@popperjs/core": {
- "version": "2.11.5",
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"license": "MIT",
"funding": {
"type": "opencollective",
@@ -4070,7 +4144,9 @@
"license": "MIT"
},
"node_modules/@types/prop-types": {
- "version": "15.7.5",
+ "version": "15.7.13",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
+ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
"license": "MIT"
},
"node_modules/@types/q": {
@@ -4101,15 +4177,10 @@
"@types/react": "*"
}
},
- "node_modules/@types/react-is": {
- "version": "17.0.3",
- "license": "MIT",
- "dependencies": {
- "@types/react": "*"
- }
- },
"node_modules/@types/react-transition-group": {
- "version": "4.4.4",
+ "version": "4.4.11",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz",
+ "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==",
"license": "MIT",
"dependencies": {
"@types/react": "*"
@@ -5984,7 +6055,9 @@
}
},
"node_modules/clsx": {
- "version": "1.1.1",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
"license": "MIT",
"engines": {
"node": ">=6"
@@ -6657,7 +6730,9 @@
"license": "MIT"
},
"node_modules/csstype": {
- "version": "3.1.0",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"license": "MIT"
},
"node_modules/damerau-levenshtein": {
@@ -6985,6 +7060,8 @@
},
"node_modules/dom-helpers": {
"version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.8.7",
@@ -14831,7 +14908,9 @@
}
},
"node_modules/react-transition-group": {
- "version": "4.4.2",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
"license": "BSD-3-Clause",
"dependencies": {
"@babel/runtime": "^7.5.5",
@@ -19324,9 +19403,18 @@
}
},
"@babel/runtime": {
- "version": "7.18.0",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
"requires": {
- "regenerator-runtime": "^0.13.4"
+ "regenerator-runtime": "^0.14.0"
+ },
+ "dependencies": {
+ "regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ }
}
},
"@babel/runtime-corejs3": {
@@ -19493,13 +19581,32 @@
}
},
"@emotion/cache": {
- "version": "11.9.3",
- "requires": {
- "@emotion/memoize": "^0.7.4",
- "@emotion/sheet": "^1.1.1",
- "@emotion/utils": "^1.0.0",
- "@emotion/weak-memoize": "^0.2.5",
- "stylis": "4.0.13"
+ "version": "11.13.5",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.5.tgz",
+ "integrity": "sha512-Z3xbtJ+UcK76eWkagZ1onvn/wAVb1GOMuR15s30Fm2wrMgC7jzpnO2JZXr4eujTTqoQFUrZIw/rT0c6Zzjca1g==",
+ "requires": {
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.2",
+ "@emotion/weak-memoize": "^0.4.0",
+ "stylis": "4.2.0"
+ },
+ "dependencies": {
+ "@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
+ },
+ "@emotion/weak-memoize": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="
+ },
+ "stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
+ }
}
},
"@emotion/hash": {
@@ -19527,17 +19634,38 @@
}
},
"@emotion/serialize": {
- "version": "1.0.4",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz",
+ "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==",
"requires": {
- "@emotion/hash": "^0.8.0",
- "@emotion/memoize": "^0.7.4",
- "@emotion/unitless": "^0.7.5",
- "@emotion/utils": "^1.0.0",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.10.0",
+ "@emotion/utils": "^1.4.2",
"csstype": "^3.0.2"
+ },
+ "dependencies": {
+ "@emotion/hash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
+ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="
+ },
+ "@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
+ },
+ "@emotion/unitless": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="
+ }
}
},
"@emotion/sheet": {
- "version": "1.1.1"
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
+ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="
},
"@emotion/styled": {
"version": "11.9.3",
@@ -19556,7 +19684,9 @@
"version": "0.7.5"
},
"@emotion/utils": {
- "version": "1.1.0"
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz",
+ "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA=="
},
"@emotion/weak-memoize": {
"version": "0.2.5"
@@ -20081,82 +20211,107 @@
"@leichtgewicht/ip-codec": {
"version": "2.0.4"
},
- "@mui/base": {
- "version": "5.0.0-alpha.85",
- "requires": {
- "@babel/runtime": "^7.17.2",
- "@emotion/is-prop-valid": "^1.1.2",
- "@mui/types": "^7.1.4",
- "@mui/utils": "^5.8.4",
- "@popperjs/core": "^2.11.5",
- "clsx": "^1.1.1",
- "prop-types": "^15.8.1",
- "react-is": "^17.0.2"
- }
+ "@mui/core-downloads-tracker": {
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.10.tgz",
+ "integrity": "sha512-LY5wdiLCBDY7u+Od8UmFINZFGN/5ZU90fhAslf/ZtfP+5RhuY45f679pqYIxe0y54l6Gkv9PFOc8Cs10LDTBYg=="
},
"@mui/icons-material": {
- "version": "5.8.4",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.10.tgz",
+ "integrity": "sha512-G6P1BCSt6EQDcKca47KwvKjlqgOXFbp2I3oWiOlFgKYTANBH89yk7ttMQ5ysqNxSYAB+4TdM37MlPYp4+FkVrQ==",
"requires": {
- "@babel/runtime": "^7.17.2"
+ "@babel/runtime": "^7.26.0"
}
},
"@mui/material": {
- "version": "5.8.4",
- "requires": {
- "@babel/runtime": "^7.17.2",
- "@mui/base": "5.0.0-alpha.85",
- "@mui/system": "^5.8.4",
- "@mui/types": "^7.1.4",
- "@mui/utils": "^5.8.4",
- "@types/react-transition-group": "^4.4.4",
- "clsx": "^1.1.1",
- "csstype": "^3.1.0",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.10.tgz",
+ "integrity": "sha512-txnwYObY4N9ugv5T2n5h1KcbISegZ6l65w1/7tpSU5OB6MQCU94YkP8n/3slDw2KcEfRk4+4D8EUGfhSPMODEQ==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/core-downloads-tracker": "^6.1.10",
+ "@mui/system": "^6.1.10",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.10",
+ "@popperjs/core": "^2.11.8",
+ "@types/react-transition-group": "^4.4.11",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1",
- "react-is": "^17.0.2",
- "react-transition-group": "^4.4.2"
+ "react-is": "^18.3.1",
+ "react-transition-group": "^4.4.5"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+ }
}
},
"@mui/private-theming": {
- "version": "5.8.4",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.10.tgz",
+ "integrity": "sha512-DqgsH0XFEweeG3rQfVkqTkeXcj/E76PGYWag8flbPdV8IYdMo+DfVdFlZK8JEjsaIVD2Eu1kJg972XnH5pfnBQ==",
"requires": {
- "@babel/runtime": "^7.17.2",
- "@mui/utils": "^5.8.4",
+ "@babel/runtime": "^7.26.0",
+ "@mui/utils": "^6.1.10",
"prop-types": "^15.8.1"
}
},
"@mui/styled-engine": {
- "version": "5.8.0",
- "requires": {
- "@babel/runtime": "^7.17.2",
- "@emotion/cache": "^11.7.1",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.10.tgz",
+ "integrity": "sha512-+NV9adKZYhslJ270iPjf2yzdVJwav7CIaXcMlPSi1Xy1S/zRe5xFgZ6BEoMdmGRpr34lIahE8H1acXP2myrvRw==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@emotion/cache": "^11.13.5",
+ "@emotion/serialize": "^1.3.3",
+ "@emotion/sheet": "^1.4.0",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1"
}
},
"@mui/system": {
- "version": "5.8.4",
- "requires": {
- "@babel/runtime": "^7.17.2",
- "@mui/private-theming": "^5.8.4",
- "@mui/styled-engine": "^5.8.0",
- "@mui/types": "^7.1.4",
- "@mui/utils": "^5.8.4",
- "clsx": "^1.1.1",
- "csstype": "^3.1.0",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.10.tgz",
+ "integrity": "sha512-5YNIqxETR23SIkyP7MY2fFnXmplX/M4wNi2R+10AVRd3Ub+NLctWY/Vs5vq1oAMF0eSDLhRTGUjaUe+IGSfWqg==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/private-theming": "^6.1.10",
+ "@mui/styled-engine": "^6.1.10",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.10",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1"
}
},
"@mui/types": {
- "version": "7.1.4",
+ "version": "7.2.19",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.19.tgz",
+ "integrity": "sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==",
"requires": {}
},
"@mui/utils": {
- "version": "5.8.4",
- "requires": {
- "@babel/runtime": "^7.17.2",
- "@types/prop-types": "^15.7.5",
- "@types/react-is": "^16.7.1 || ^17.0.0",
+ "version": "6.1.10",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.10.tgz",
+ "integrity": "sha512-1ETuwswGjUiAf2dP9TkBy8p49qrw2wXa+RuAjNTRE5+91vtXJ1HKrs7H9s8CZd1zDlQVzUcUAPm9lpQwF5ogTw==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/types": "^7.2.19",
+ "@types/prop-types": "^15.7.13",
+ "clsx": "^2.1.1",
"prop-types": "^15.8.1",
- "react-is": "^17.0.2"
+ "react-is": "^18.3.1"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+ }
}
},
"@nodelib/fs.scandir": {
@@ -20191,7 +20346,9 @@
}
},
"@popperjs/core": {
- "version": "2.11.5"
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A=="
},
"@react-leaflet/core": {
"version": "2.0.0",
@@ -20659,7 +20816,9 @@
"version": "2.6.1"
},
"@types/prop-types": {
- "version": "15.7.5"
+ "version": "15.7.13",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
+ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA=="
},
"@types/q": {
"version": "1.5.5"
@@ -20684,14 +20843,10 @@
"@types/react": "*"
}
},
- "@types/react-is": {
- "version": "17.0.3",
- "requires": {
- "@types/react": "*"
- }
- },
"@types/react-transition-group": {
- "version": "4.4.4",
+ "version": "4.4.11",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz",
+ "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==",
"requires": {
"@types/react": "*"
}
@@ -21869,7 +22024,9 @@
}
},
"clsx": {
- "version": "1.1.1"
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="
},
"co": {
"version": "4.6.0"
@@ -22262,7 +22419,9 @@
}
},
"csstype": {
- "version": "3.1.0"
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"damerau-levenshtein": {
"version": "1.0.8"
@@ -22464,6 +22623,8 @@
},
"dom-helpers": {
"version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"requires": {
"@babel/runtime": "^7.8.7",
"csstype": "^3.0.2"
@@ -27149,7 +27310,9 @@
}
},
"react-transition-group": {
- "version": "4.4.2",
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
"requires": {
"@babel/runtime": "^7.5.5",
"dom-helpers": "^5.0.1",
diff --git a/package.json b/package.json
index f9ca4ee9..78d67016 100644
--- a/package.json
+++ b/package.json
@@ -9,8 +9,8 @@
"@fortawesome/free-brands-svg-icons": "^6.6.0",
"@fortawesome/free-solid-svg-icons": "^6.6.0",
"@fortawesome/react-fontawesome": "^0.2.2",
- "@mui/icons-material": "^5.8.4",
- "@mui/material": "^5.8.4",
+ "@mui/icons-material": "^6.1.10",
+ "@mui/material": "^6.1.10",
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.2.0",
"@testing-library/user-event": "^13.5.0",
diff --git a/public/assets/img/markers/fire_sale.svg b/public/assets/img/markers/fire_sale.svg
new file mode 100644
index 00000000..6a650e26
--- /dev/null
+++ b/public/assets/img/markers/fire_sale.svg
@@ -0,0 +1,12 @@
+
diff --git a/public/assets/img/markers/sword.svg b/public/assets/img/markers/sword.svg
new file mode 100644
index 00000000..7f3a6116
--- /dev/null
+++ b/public/assets/img/markers/sword.svg
@@ -0,0 +1,12 @@
+
diff --git a/public/assets/img/markers/sword_upgrade.svg b/public/assets/img/markers/sword_upgrade.svg
new file mode 100644
index 00000000..7cd42aef
--- /dev/null
+++ b/public/assets/img/markers/sword_upgrade.svg
@@ -0,0 +1,14 @@
+
diff --git a/public/assets/img/markers/vulture_aid.svg b/public/assets/img/markers/vulture_aid.svg
new file mode 100644
index 00000000..6b1cfa26
--- /dev/null
+++ b/public/assets/img/markers/vulture_aid.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/App.tsx b/src/App.tsx
index d2e66244..8152b30e 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -3,13 +3,15 @@ import {
Route,
BrowserRouter as Router,
Routes,
- useParams,
+ useParams
} from 'react-router-dom';
import MapProvider from './components/Map';
+import { IsValidMapId } from './components/MapControls/MapIds';
import {
UserContextProvider,
- useUserContext,
+ useUserContext
} from './contexts/UserContext/userContextProvider';
+import HomePage from './pages/HomePage';
import { BaseLayout } from './pages/layouts/BaseLayout';
function App() {
@@ -20,8 +22,8 @@ function App() {
-
-
+
+
@@ -31,31 +33,14 @@ function App() {
);
}
-const MapWithItemId = () => {
- const { id } = useParams();
- const {
- isOnStartup,
- setSharedMapItemId,
- isDebugMode,
- setInitiallySharedMapItemId,
- } = useUserContext();
-
- // Update the global state with the 'id' parameter
+const MapWithIdRoute = () => {
+ const { id: mapUrlId } = useParams();
+ const { setSharedMapItemId } = useUserContext();
useEffect(() => {
- if (isOnStartup) {
- if (isDebugMode) {
- console.log('setSharedMapItemId: ', id);
- }
- setInitiallySharedMapItemId(id);
- setSharedMapItemId(id);
+ if (mapUrlId && !IsValidMapId(mapUrlId)) {
+ setSharedMapItemId(mapUrlId);
}
- }, [
- id,
- isDebugMode,
- isOnStartup,
- setInitiallySharedMapItemId,
- setSharedMapItemId,
- ]);
+ }, [mapUrlId, setSharedMapItemId]);
return ;
};
diff --git a/src/classes/index.ts b/src/classes/index.ts
index 88546831..026f256b 100644
--- a/src/classes/index.ts
+++ b/src/classes/index.ts
@@ -32,13 +32,15 @@ export class BaseMarker extends Item {
loc: LatLngExpression;
img?: string;
linkedItems?: string;
+ externalLinks?: string;
- constructor({ id, title, desc, icon, layer, typeDesc, loc, img, linkedItems }: any) {
+ constructor({ id, title, desc, icon, layer, typeDesc, loc, img, linkedItems, externalLinks }: any) {
super({ id, title, desc, icon, layer });
this.typeDesc = typeDesc;
this.loc = loc ?? [0, 0];
this.img = img ?? '';
this.linkedItems = linkedItems ?? '';
+ this.externalLinks = externalLinks ?? '';
}
}
@@ -77,11 +79,12 @@ export class MiscMarker extends BaseMarker {
uniqueDesc?: string;
img?: string;
linkedItems?: string;
+ externalLinks?: string;
}
) {
var newTitle = optional?.uniqueTitle ? optional?.uniqueTitle : title;
- desc = optional?.uniqueDesc ? `${optional?.uniqueDesc}\n${desc}` : desc;
- super({ id, title: newTitle, desc, icon, loc, typeDesc: title, img: optional?.img, linkedItems: optional?.linkedItems });
+ desc = optional?.uniqueDesc ? `${desc}\n${optional?.uniqueDesc}` : desc;
+ super({ id, title: newTitle, desc, icon, loc, typeDesc: title, img: optional?.img, linkedItems: optional?.linkedItems, externalLinks: optional?.externalLinks });
}
}
diff --git a/src/components/EasterEggs/List/index.tsx b/src/components/EasterEggs/List/index.tsx
index 96d86a3d..0dcac5f7 100644
--- a/src/components/EasterEggs/List/index.tsx
+++ b/src/components/EasterEggs/List/index.tsx
@@ -44,6 +44,7 @@ export const EggList = () => {
icon={egg.icon}
img={egg.img}
linkedItems={egg.linkedItems}
+ externalLinks={egg.externalLinks}
/>;
});
if (RenderedEggList.length === 0) {
diff --git a/src/components/EasterEggs/ListMenu/index.tsx b/src/components/EasterEggs/ListMenu/index.tsx
index cd9a4a45..c875e426 100644
--- a/src/components/EasterEggs/ListMenu/index.tsx
+++ b/src/components/EasterEggs/ListMenu/index.tsx
@@ -47,15 +47,22 @@ export const EggListMenu = () => {
// watch((data, { name, type }) => console.log(data, name, type))
+ const onModalClick = (e) => {
+ e.stopPropagation();
+ };
+
return (
-
+
}
+ expandIcon={}
aria-controls="easterEgg-filter"
id="easterEgg-filter-header"
>
@@ -65,12 +72,14 @@ export const EggListMenu = () => {
variant="outlined"
{...register('searchTerm')}
/>
- {totalEggOfType}
+
+ {totalEggOfType}
+
-
+
{/* */}
Filter Easter Eggs Here
-
+
@@ -92,10 +101,19 @@ const StyledExpandableMenu = styled.form`
`;
const StyledAccordionSummary = styled(AccordionSummary)`
+background-color: var(--clr-grey-l);
+
.MuiAccordionSummary-content {
display: flex;
justify-content: space-between;
align-items: center;
+
+ #easterEggSearch,
+ #easterEggSearch input {
+ background-color: var(--clr-white);
+ border-radius: var(--radius);
+ border: unset;
+ }
}
`
@@ -103,4 +121,12 @@ const StyledAccordion = styled(Accordion)`
width: 100%;
margin: 0;
box-shadow: none;
+`;
+
+const StyledAccordionDetails = styled(AccordionDetails)`
+ background: var(--clr-grey-l);
+`;
+
+const StyledResultsCounter = styled.div`
+ color: var(--clr-white-d);
`;
\ No newline at end of file
diff --git a/src/components/Header/index.tsx b/src/components/Header/index.tsx
index 6bf3bc26..7d9c5fd7 100644
--- a/src/components/Header/index.tsx
+++ b/src/components/Header/index.tsx
@@ -2,6 +2,7 @@ import styled from '@emotion/styled';
import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
import { Button, Chip, Divider, Drawer, Menu, MenuItem } from '@mui/material';
import React, { useContext } from 'react';
+import { useNavigate } from 'react-router-dom';
import { DeclassifiedContext } from '../../contexts/DeclassifiedContext/declassifiedContextProvider';
import { useUserContext } from '../../contexts/UserContext/userContextProvider';
import { Game, MapGroupings, MapGroupItem } from '../MapControls/types';
@@ -12,7 +13,6 @@ const StyledHeader = styled.header`
position: absolute;
z-index: var(--z-index-menu);
left: calc((100vw - 375px) / 2);
-
button {
color: var(--clr-white);
width: 375px;
@@ -48,6 +48,14 @@ const MapDrawer = styled(Drawer)`
}
`;
const MapMenu = styled(Menu)`
+ .current-map-indicator {
+ height: 10px;
+ width: 10px;
+ background-color: var(--clr-red);
+ border-radius: 50%;
+ display: inline-block;
+ margin-left: 10px;
+ }
.MuiPaper-root {
width: 375px;
background-color: var(--clr-bg-inverted);
@@ -82,6 +90,7 @@ const GameTitle = styled(Chip)`
`;
const Header = () => {
+ const navigate = useNavigate();
const { isMobile } = useUserContext();
const { currentMapGroup } = useContext(DeclassifiedContext);
const { setCurrentMapWithValidation: setCurrentMap } =
@@ -185,20 +194,23 @@ const Header = () => {
);
function buildMapItems(mapGroup: [string, MapGroupItem][]) {
+
return mapGroup
? mapGroup.map(([key, mapGroupItem]) => {
- // TODO : maybe swap this out for some better styling instead of removing the current map
- if (currentMapGroup!.mapName !== mapGroupItem.mapName) {
- return (
-
- )
- }
- return null;
+ return (
+
+ )
})
: null;
}
diff --git a/src/components/Intel/IntelDetailsItem/index.tsx b/src/components/Intel/IntelDetailsItem/index.tsx
index 72bcc099..09e81bd7 100644
--- a/src/components/Intel/IntelDetailsItem/index.tsx
+++ b/src/components/Intel/IntelDetailsItem/index.tsx
@@ -10,6 +10,7 @@ import { useLiveQuery } from "dexie-react-hooks";
import { useContext, useEffect, useState } from "react";
import { useMapEvents } from "react-leaflet";
import { DeclassifiedContext } from "../../../contexts/DeclassifiedContext/declassifiedContextProvider";
+import { useUserContext } from "../../../contexts/UserContext/userContextProvider";
import { addCollectedIntel, deleteCollectedIntel } from "../../../data/dataAccessLayer";
import { db } from "../../../data/db";
import { DefaultPOIData, Faction, IIntelItem } from "../../../data/intel";
@@ -38,8 +39,8 @@ export const IntelDetailsItem = ({
multiSelectState,
addRemoveItemMultiSelect,
}: IIntelItemWithHandler) => {
- const { setCurrentMapWithValidation: setCurrentMap, currentMap } =
- useContext(DeclassifiedContext);
+ const { setSharedMapItemId } = useUserContext();
+ const { setCurrentMapWithValidation: setCurrentMap, currentMap } = useContext(DeclassifiedContext);
const mapInstance = useMapEvents({});
const [expanded, setExpanded] = useState(false);
const [isSelected, setIsSelected] = useState(multiSelectState?.includes(id) ?? false);
@@ -62,7 +63,6 @@ export const IntelDetailsItem = ({
{
- // if(event)
setExpanded(!expanded)
}}
>
@@ -125,10 +125,12 @@ export const IntelDetailsItem = ({
var mapSetResult = await setCurrentMap(mapItem);
if (mapSetResult) {
mapInstance.flyTo(loc, 4);
+ setSharedMapItemId(id);
}
}
} else {
mapInstance.flyTo(loc, 4);
+ setSharedMapItemId(id);
}
}}
>
diff --git a/src/components/Intel/IntelListMenu/index.tsx b/src/components/Intel/IntelListMenu/index.tsx
index a51c1095..8a8ff269 100644
--- a/src/components/Intel/IntelListMenu/index.tsx
+++ b/src/components/Intel/IntelListMenu/index.tsx
@@ -128,7 +128,7 @@ const StyledAccordionSummary = styled(AccordionSummary)`
}
#intelSearch,
#intelSearch input {
- background-color: white;
+ background-color: var(--clr-white);
border-radius: var(--radius);
border: unset;
}
diff --git a/src/components/Intel/IntelMapMarker/index.tsx b/src/components/Intel/IntelMapMarker/index.tsx
index 50b76e65..462e535c 100644
--- a/src/components/Intel/IntelMapMarker/index.tsx
+++ b/src/components/Intel/IntelMapMarker/index.tsx
@@ -36,17 +36,17 @@ export const IntelMapMarker = ({
img,
map,
}: IntelItem) => {
+ const { sharedMapItemId } = useUserContext();
const mapInstance = useMapEvents({});
const [markerInstance, setPopupInstance] = useState(null); // State to hold the Popup instance
- const { initiallySharedMapItemId } = useUserContext();
const isCollected = useLiveQuery(() => db.intelCollected.get(id ?? ''));
const markerIcon = renderLeafletIcon(isCollected, faction, typeDesc);
useEffect(() => {
- if (initiallySharedMapItemId === id && markerInstance) {
+ if (sharedMapItemId === id && markerInstance) {
markerInstance.openPopup();
}
- }, [initiallySharedMapItemId, id, markerInstance, mapInstance]);
+ }, [sharedMapItemId, id, markerInstance, mapInstance]);
return loc !== null && loc.toString() === DefaultPOIData.nullLoc.toString() ? (
<>>
diff --git a/src/components/MapControls/MapIds.ts b/src/components/MapControls/MapIds.ts
new file mode 100644
index 00000000..3aa025bf
--- /dev/null
+++ b/src/components/MapControls/MapIds.ts
@@ -0,0 +1,53 @@
+
+export const MapIds = {
+ allOutbreakMaps: `outbreak`,
+ zoo: `zoo`,
+ ruka: `ruka`,
+ duga: `duga`,
+ alpine: `alpine`,
+ golova: `golova`,
+ sanatorium: `sanatorium`,
+ collateral: `collateral`,
+ armada: `armada`,
+ dieMaschine: `dieMaschine`,
+ dieMaschineUnderground: `dieMaschineUnderground`,
+ firebaseZ: `firebaseZ`,
+ firebaseZSpawn: `firebaseZSpawn`,
+ mauerDerToten: `mauerDerToten`,
+ mauerDerTotenStreets: `mauerDerTotenStreets`,
+ forsaken: `forsaken`,
+ forsakenUnderground: `forsakenUnderground`,
+ miami: `miami`,
+ satellite: `satellite`,
+ moscow: `moscow`,
+ nuketown: `nuketown`,
+ thePines: `thePines`,
+ express: `express`,
+ rush: `rush`,
+ echelon: `echelon`,
+ driveIn: `driveIn`,
+ cartel: `cartel`,
+ crossroads: `crossroads`,
+ raid: `raid`,
+ apocalypse: `apocalypse`,
+ yamantau: `yamantau`,
+ standoff: `standoff`,
+ collateralOn: `collateralOn`,
+ checkmate: `checkmate`,
+ garrison: `garrison`,
+ deprogram: `deprogram`,
+ //b06
+ libertyFalls: `libertyFalls`,
+ terminusBiolabs: `terminusBiolabs`,
+ terminusPrison: `terminusPrison`,
+ terminusIslands: `terminusBiolabs`, // TODO: change thisto be unique when the refactoring for multiple layer markers is done
+ citadelle: `citadelle`, // TODO: change thisto be unique when the refactoring for multiple layer markers is done
+} as const;
+
+export type MapId = (typeof MapIds)[keyof typeof MapIds];
+
+export const IsValidMapId = (value: string | undefined | null): boolean => {
+ if (!value) return false;
+ var validatedMap = MapIds[value];
+ return validatedMap !== undefined;
+};
diff --git a/src/components/MapControls/types.ts b/src/components/MapControls/types.ts
index 1ee73dda..cf4f8263 100644
--- a/src/components/MapControls/types.ts
+++ b/src/components/MapControls/types.ts
@@ -49,7 +49,7 @@ export const MapGroupings: MapGroupDictionary = {
],
game: Game.coldWar,
},
- liberty_falls: {
+ libertyFalls: {
mapName: 'Liberty Falls',
mapLayers: [MapDetails.libertyFalls],
game: Game.bo6,
@@ -59,6 +59,11 @@ export const MapGroupings: MapGroupDictionary = {
mapLayers: [MapDetails.terminusBiolabs, MapDetails.terminusPrison], // TODO eventually fix the layer issue with icons over multiple layers. Might need to add it here
game: Game.bo6,
},
+ citadelle_Group: {
+ mapName: 'Citadelle Des Morts',
+ mapLayers: [MapDetails.citadelle],
+ game: Game.bo6,
+ },
};
export interface MapControlsProps {
diff --git a/src/components/MapMarkers/index.tsx b/src/components/MapMarkers/index.tsx
index 0abb7eb9..3ad3cca7 100644
--- a/src/components/MapMarkers/index.tsx
+++ b/src/components/MapMarkers/index.tsx
@@ -1,13 +1,15 @@
-import { useContext, useState } from 'react';
+import { useContext } from 'react';
import { LayerGroup, LayersControl } from 'react-leaflet';
-import { Item } from '../../classes';
import { DeclassifiedContext } from '../../contexts/DeclassifiedContext/declassifiedContextProvider';
+import { useUserContext } from '../../contexts/UserContext/userContextProvider';
+import { DoorStore } from '../../data/doors';
import { StaticEggStore } from '../../data/easterEggs';
import { IntelStore, IntelType } from '../../data/intel';
import { StaticQuestStore } from '../../data/mainQuest';
import { MiscStore } from '../../data/misc';
import { PerkStore } from '../../data/perks';
-import { MarkerLayerTypes, MarkerStore } from '../../data/types';
+import { LayerGrouping, MarkerLayerTypes, MarkerStore } from '../../data/types';
+import { WallbuyStore } from '../../data/wallbuys';
import { IntelMapMarker } from '../Intel/IntelMapMarker';
import { MiscMapMarker } from '../MiscMapMarker';
@@ -43,11 +45,8 @@ export const MapMarkers = () => {
// [0, 0],
// ]
const { currentMap } = useContext(DeclassifiedContext);
- const [isChecked, setIsChecked] = useState(true);
-
- const renderedAudioMarkers = renderIntelMapMarkers(currentMap!.id!, IntelType.Audio);
- const renderedArtifactMarkers = renderIntelMapMarkers(currentMap!.id!, IntelType.Artifact);
- const renderedDocumentMarkers = renderIntelMapMarkers(currentMap!.id!, IntelType.Docs);
+ //set state of isLayerChecked to be true for every array entry:
+ const { layerCheckboxStates } = useUserContext();
function AnyResultsInMarkerStore(markerStore: MarkerStore) {
return markerStore[currentMap!.id!] && markerStore[currentMap!.id!].length > 0;
@@ -55,56 +54,22 @@ export const MapMarkers = () => {
// TODO : Refactor this so it's neater. This is a hacky solution to force the layer controls to be rendered in order (I don't think this works)
const renderOrderOfLayers = [
- renderedAudioMarkers.length > 0 ? (
-
-
- {renderedAudioMarkers}
-
-
- ) : null
- ,
- renderedArtifactMarkers.length > 0 ? (
-
-
- {renderedArtifactMarkers}
-
-
- ) : null
- ,
- renderedDocumentMarkers.length > 0 ? (
-
-
- {renderedDocumentMarkers}
-
-
- ) : null
- ,
+ RenderIntelLayerControlGroup(MarkerLayerTypes.intelAudio),
+ RenderIntelLayerControlGroup(MarkerLayerTypes.intelArtifacts),
+ RenderIntelLayerControlGroup(MarkerLayerTypes.intelDocuments),
RenderLayerControlGroup(PerkStore, MarkerLayerTypes.perks),
RenderLayerControlGroup(MiscStore, MarkerLayerTypes.misc),
+ RenderLayerControlGroup(DoorStore, MarkerLayerTypes.doors),
+ RenderLayerControlGroup(WallbuyStore, MarkerLayerTypes.wallbuy),
RenderLayerControlGroup(StaticEggStore, MarkerLayerTypes.easterEggs),
RenderLayerControlGroup(StaticQuestStore, MarkerLayerTypes.mainQuest),
]
return (
<>
- {renderOrderOfLayers[0]}
- {renderOrderOfLayers[1]}
- {renderOrderOfLayers[2]}
- {renderOrderOfLayers[3]}
- {renderOrderOfLayers[4]}
- {renderOrderOfLayers[5]}
- {renderOrderOfLayers[6]}
-
-
- {/*
+ {renderOrderOfLayers.map((layer) => layer)}
+ {/*
+ Example of how we could use shape overlays and point to point connections
+
{
>
);
- function RenderLayerControlGroup(markerStore: MarkerStore, markerLayerType: Item) {
+ function RenderLayerControlGroup(markerStore: MarkerStore, markerLayerType: LayerGrouping) {
return AnyResultsInMarkerStore(markerStore) ? (
{renderMiscMapMarkers(markerStore, currentMap!.id!)}
) : null;
}
+
+ function RenderIntelLayerControlGroup(layerGroup: LayerGrouping) {
+ var renderedIntelMarkers = renderIntelMapMarkers(currentMap!.id!, layerGroup.intelType!);
+ return renderedIntelMarkers.length > 0 ? (
+
+
+ {renderedIntelMarkers}
+
+
+ ) : null
+ }
};
diff --git a/src/components/MiscDetailsItem/index.tsx b/src/components/MiscDetailsItem/index.tsx
index 77abf0ed..cc1756b4 100644
--- a/src/components/MiscDetailsItem/index.tsx
+++ b/src/components/MiscDetailsItem/index.tsx
@@ -5,6 +5,7 @@ import { Accordion, AccordionDetails, AccordionSummary, Button, Paper, Typograph
import { useContext, useState } from "react";
import { useMapEvents } from "react-leaflet";
import { DeclassifiedContext } from "../../contexts/DeclassifiedContext/declassifiedContextProvider";
+import { useUserContext } from "../../contexts/UserContext/userContextProvider";
import { LegacyIcons } from "../../data/icons";
import { DefaultPOIData } from "../../data/intel";
import { GetMapById } from "../../data/maps/mapDetails";
@@ -22,12 +23,15 @@ export const MiscDetailItem = ({
icon,
img,
isMarker = false,
- linkedItems }) => {
+ linkedItems,
+ externalLinks }) => {
+ const { setSharedMapItemId } = useUserContext();
const { setCurrentMapWithValidation: setCurrentMap, currentMap } = useContext(DeclassifiedContext);
const mapInstance = useMapEvents({});
const [expanded, setExpanded] = useState(false);
let miscItemResult = getMiscMarkerById(id!);
const linkedItemsArray = linkedItems ? linkedItems?.split(',') : [];
+ const externalLinkArray = externalLinks ? externalLinks?.split(',') : [];
const subheading: string[] = [];
let miscItemMap, miscMapId, miscItem;
if (miscItemResult) {
@@ -73,11 +77,24 @@ export const MiscDetailItem = ({
{subheading.join(' - ')}
- {desc}
- {linkedItemsArray.length > 0 ? linkedItemsArray.map((item, index) => (
- Related{index !== 0 ? ` #${index + 1}` : null}
- )) : null}
+ {desc.trim()}
+ {externalLinkArray.length > 0 || linkedItemsArray.length > 0 ? (
+
+ {externalLinkArray.length > 0 ? externalLinkArray.map((externalLink, index) => (
+ {externalLink}{index !== 0 ? ` #${index + 1}` : null}
+ )) : null}
+ {linkedItemsArray.length > 0 ? (
+ <>
+ Related Markers
+
+ >
+ ) : null}
+ {linkedItemsArray.length > 0 ? linkedItemsArray.map((internalItemId, index) => (
+ Marker{index !== 0 ? ` #${index + 1}` : null}
+ )) : null}
+
+ ) : null}
{ItemHasLocation && miscItemMap?.mapCanRender ?
+
{/*
*/}
diff --git a/src/contexts/DeclassifiedContext/declassifiedContextProvider.tsx b/src/contexts/DeclassifiedContext/declassifiedContextProvider.tsx
index 9023d65e..12385793 100644
--- a/src/contexts/DeclassifiedContext/declassifiedContextProvider.tsx
+++ b/src/contexts/DeclassifiedContext/declassifiedContextProvider.tsx
@@ -6,17 +6,18 @@ import {
useRef,
useState,
} from 'react';
-import { useMapEvent, useMapEvents } from 'react-leaflet';
+import { useMapEvents } from 'react-leaflet';
+import { useNavigate, useParams } from 'react-router-dom';
import { MapItem, MiscMarker } from '../../classes';
import { EggFormInputs, getEggFilterDefaults } from '../../components/EasterEggs/ListMenu';
import {
getIntelFilterDefaults,
IntelFormInputs,
} from '../../components/Intel/IntelListMenu';
+import { IsValidMapId } from '../../components/MapControls/MapIds';
import { MapGroupings, MapGroupItem } from '../../components/MapControls/types';
import {
- getSetUserPreferences,
- updateUserPreferences,
+ getSetUserPreferences
} from '../../data/dataAccessLayer';
import { db, DeclassifiedUserPreferences } from '../../data/db';
import { StaticEggStore } from '../../data/easterEggs';
@@ -32,8 +33,6 @@ import {
} from '../UserContext/userContextProvider';
import { DeclassifiedContextProps, ToggleDrawerOptions } from './types';
-let timeoutId: ReturnType | null = null;
-
const initialContextValues = {
userPrefs: {},
currentMap: null,
@@ -53,22 +52,31 @@ const initialContextValues = {
filteredEggStore: [],
};
-async function updateUserPreferencesInDB(
- updates: Partial>
-): Promise {
- return await updateUserPreferences(updates);
-}
-
export const DeclassifiedContext = createContext(initialContextValues);
export const DeclassifiedContextProvider = ({ children }) => {
+ const { id: mapUrlId } = useParams();
const mapInstance = useMapEvents({});
- const { isOnStartup, isDebugMode, setSharedMapItemId } = useUserContext();
- const [userPrefs, setUserPreferences] =
- useState(null);
- const [currentMap, setCurrentMap] = useState(null);
+ const { isDebugMode, setSharedMapItemId, saveLayerCheckboxState } = useUserContext();
+ const [userPrefs, setUserPreferences] = useState(null);
+
+ var initialMap: MapItem | null = MapDetails.citadelle;
+ var initialMapGroupItem: MapGroupItem | null = MapGroupings.citadelle_Group;
+ if (mapUrlId && IsValidMapId(mapUrlId)) {
+ initialMap = GetMapById(mapUrlId) ?? null;
+ Object.entries(MapGroupings).forEach(([key, mapGroupItem]) => {
+ if (initialMap && mapGroupItem.mapLayers.includes(initialMap)) {
+ if (isDebugMode) {
+ console.log('Setting current map GROUP to: ', mapGroupItem);
+ }
+ initialMapGroupItem = mapGroupItem;
+ }
+ });
+ }
+
+ const [currentMap, setCurrentMap] = useState(initialMap);
const [currentMapGroup, setCurrentMapGroup] = useState(
- null
+ initialMapGroupItem
);
const [isLoading, setIsLoading] = useState(true); // Add loading state
const [filteredIntelStore, setFilteredIntelStore] = useState([]);
@@ -82,10 +90,11 @@ export const DeclassifiedContextProvider = ({ children }) => {
const [drawerState, setDrawerState] = useState(
initialContextValues.drawerState
);
- const { initiallySharedMapItemId, setInitiallySharedMapItemId, setIsOnStartup } = useUserContext();
+ const { setIsOnStartup } = useUserContext();
const { triggerDialog } = useNotification();
const [isMapLoaded, setIsMapLoaded] = useState(false);
const timeoutIdRef = useRef(null);
+ const navigate = useNavigate();
const setCurrentMapWithValidation = useCallback(async (newMap: MapItem) => {
if (isDebugMode) {
@@ -93,23 +102,22 @@ export const DeclassifiedContextProvider = ({ children }) => {
}
if (newMap.mapOverlay !== null && newMap.mapOverlay !== undefined) {
setCurrentMap(newMap);
- Object.entries(MapGroupings).forEach(([key, mapItem]) => {
- if (newMap && mapItem.mapLayers.includes(newMap)) {
+ Object.entries(MapGroupings).forEach(([key, mapGroupItem]) => {
+ if (newMap && mapGroupItem.mapLayers.includes(newMap)) {
if (isDebugMode) {
- console.log('Setting current map GROUP to: ', mapItem);
+ console.log('Setting current map GROUP to: ', mapGroupItem);
}
- setCurrentMapGroup(mapItem);
- setSharedMapItemId(newMap.id);
+ setCurrentMapGroup(mapGroupItem);
+ navigate(`/${newMap.id}`);
}
});
- await updateUserPreferencesInDB({ currentMap: newMap.id });
return true;
} else {
console.error("Cannot set a map that doesn't exist.");
return false;
}
- }, [isDebugMode, setSharedMapItemId]);
+ }, [isDebugMode, navigate]);
const toggleDrawer = ({ isOpen, content, clickEvent }: ToggleDrawerOptions) => {
if (isDebugMode) {
@@ -126,25 +134,33 @@ export const DeclassifiedContextProvider = ({ children }) => {
setDrawerState({ isOpen, content: content ?? <>> });
};
- useMapEvent('baselayerchange', props => {
- let currentMapKey = GetMapByTitle(props.name);
- if (currentMapKey) {
+ useMapEvents({
+ baselayerchange: (props) => {
+ let currentMapKey = GetMapByTitle(props.name);
+ if (currentMapKey) {
+ if (isDebugMode) {
+ console.log('setCurrentMapWithValidation with baselayerchange: ', currentMapKey);
+ }
+ setCurrentMapWithValidation(MapDetails[currentMapKey]);
+ }
+ },
+ overlayadd: (props) => {
+ if (isDebugMode) {
+ console.log('overlayadd: ', props);
+ }
+ saveLayerCheckboxState(props.name, true);
+ },
+ overlayremove: (props) => {
if (isDebugMode) {
- console.log('setCurrentMapWithValidation with baselayerchange: ', currentMapKey);
+ console.log('overlayremove: ', props);
}
- setCurrentMapWithValidation(MapDetails[currentMapKey]);
+ saveLayerCheckboxState(props.name, false);
}
});
const focusOnSharedItem = useCallback(async (sharedMapItemId) => {
if (isMapLoaded) {
if (sharedMapItemId) {
- const sharedMapItem = GetMapById(sharedMapItemId)
- if (sharedMapItem) {
- setCurrentMapWithValidation(sharedMapItem);
-
- return;
- }
if (isDebugMode) {
console.log('Focus on shared item: ', sharedMapItemId);
}
@@ -161,8 +177,6 @@ export const DeclassifiedContextProvider = ({ children }) => {
mapInstance.flyTo(intelItem.loc, 4);
return;
}
-
- return;
} else {
let miscItemResult = getMiscMarkerById(sharedMapItemId);
if (miscItemResult) {
@@ -181,7 +195,6 @@ export const DeclassifiedContextProvider = ({ children }) => {
}
}
}
- return;
}
}
}
@@ -222,6 +235,34 @@ export const DeclassifiedContextProvider = ({ children }) => {
}
}, [collectedIntel, currentEggFilter.easterEggTypes, currentEggFilter.searchTerm, currentIntelFilter, currentMapGroup])
+ useEffect(() => {
+ if (mapUrlId) {
+ const checkMapLoaded = () => {
+ if (isDebugMode) {
+ console.log('isMapLoaded && sharedMapItemId: ', isMapLoaded, mapUrlId);
+ }
+
+ if (timeoutIdRef.current) {
+ clearTimeout(timeoutIdRef.current); // Clear the previous timeout if any
+ }
+
+ timeoutIdRef.current = setTimeout(() => {
+ if (isMapLoaded) {
+ setIsOnStartup(false);
+ focusOnSharedItem(mapUrlId);
+ } else {
+ if (isDebugMode) {
+ console.log('RETRYING FOCUS: ', isMapLoaded, mapUrlId);
+ }
+ timeoutIdRef.current = setTimeout(checkMapLoaded, 50);
+ }
+ }, 50);
+ };
+
+ checkMapLoaded();
+ }
+ }, [focusOnSharedItem, isDebugMode, isMapLoaded, setIsOnStartup, mapUrlId])
+
useEffect(() => {
const fetchPreferences = async () => {
try {
@@ -238,16 +279,6 @@ export const DeclassifiedContextProvider = ({ children }) => {
});
}
- if (!initiallySharedMapItemId && isOnStartup && data!.currentMap !== initiallySharedMapItemId) {
- const userPrefsCurrentMap = GetMapById(data!.currentMap);
- if (userPrefsCurrentMap) {
- if (isDebugMode) {
- console.log('Setting current map from user preferences: ', userPrefsCurrentMap);
- }
- setCurrentMapWithValidation(userPrefsCurrentMap);
- }
- }
-
setIsMapLoaded(true);
setIsOnStartup(false);
} catch (error) {
@@ -258,34 +289,7 @@ export const DeclassifiedContextProvider = ({ children }) => {
};
fetchPreferences();
-
- if (initiallySharedMapItemId) {
- const checkMapLoaded = () => {
- if (isDebugMode) {
- console.log('isMapLoaded && initiallySharedMapItemId: ', isMapLoaded, initiallySharedMapItemId);
- }
-
- if (timeoutIdRef.current) {
- clearTimeout(timeoutIdRef.current); // Clear the previous timeout if any
- }
-
- timeoutIdRef.current = setTimeout(() => {
- if (isMapLoaded) {
- setIsOnStartup(false);
- focusOnSharedItem(initiallySharedMapItemId);
- setInitiallySharedMapItemId(undefined);
- } else {
- if (isDebugMode) {
- console.log('RETRYING FOCUS: ', isMapLoaded, initiallySharedMapItemId);
- }
- timeoutIdRef.current = setTimeout(checkMapLoaded, 50);
- }
- }, 50);
- };
-
- checkMapLoaded();
- }
- }, [focusOnSharedItem, initiallySharedMapItemId, isDebugMode, isMapLoaded, isOnStartup, setCurrentMapWithValidation, setInitiallySharedMapItemId, setIsOnStartup, triggerDialog]);
+ }, [setIsOnStartup, triggerDialog]);
if (isLoading) {
diff --git a/src/contexts/DeclassifiedContext/types.ts b/src/contexts/DeclassifiedContext/types.ts
index 9bd52280..e368ed3f 100644
--- a/src/contexts/DeclassifiedContext/types.ts
+++ b/src/contexts/DeclassifiedContext/types.ts
@@ -10,9 +10,9 @@ export interface ToggleDrawerOptions {
isOpen: boolean;
content?: JSX.Element;
clickEvent?:
- | React.SyntheticEvent
- | React.KeyboardEvent
- | React.MouseEvent;
+ | React.SyntheticEvent
+ | React.KeyboardEvent
+ | React.MouseEvent;
}
export interface DeclassifiedContextProps {
@@ -55,8 +55,6 @@ export interface UserContextProps {
setIsMobile: (state: boolean) => void;
isDebugMode: boolean;
setIsDebugMode: (state: boolean) => void;
- initiallySharedMapItemId: string | null;
- setInitiallySharedMapItemId: (state: string | undefined) => void;
sharedMapItemId: string | null;
setSharedMapItemId: (id: string | undefined) => void;
contributionState: {
@@ -73,4 +71,6 @@ export interface UserContextProps {
itemType: string | null;
}>
) => void;
+ layerCheckboxStates: { [key: string]: boolean };
+ saveLayerCheckboxState: (layer: string, state: boolean) => void;
}
diff --git a/src/contexts/UserContext/userContextProvider.tsx b/src/contexts/UserContext/userContextProvider.tsx
index 7eefaf64..7aa2465a 100644
--- a/src/contexts/UserContext/userContextProvider.tsx
+++ b/src/contexts/UserContext/userContextProvider.tsx
@@ -1,15 +1,24 @@
import { createContext, useContext, useEffect, useState } from 'react';
+import { MarkerLayerTypes } from '../../data/types';
import { UserContextProps } from '../DeclassifiedContext/types';
+const initializeCheckboxStates = () => {
+ const initialLayerCheckboxStates: { [key: string]: boolean; } = {};
+ for (const key in MarkerLayerTypes) {
+ if (Object.prototype.hasOwnProperty.call(MarkerLayerTypes, key)) {
+ initialLayerCheckboxStates[MarkerLayerTypes[key].id] = true;
+ }
+ }
+ return initialLayerCheckboxStates;
+}
+
const initialContextValues = {
isOnStartup: true,
setIsOnStartup: () => { },
isMobile: window.innerWidth <= 768,
setIsMobile: () => { },
- isDebugMode: false,
+ isDebugMode: JSON.parse(localStorage.getItem('isDebugMode') || 'null') || false,
setIsDebugMode: () => { },
- initiallySharedMapItemId: null,
- setInitiallySharedMapItemId: () => { },
sharedMapItemId: null,
setSharedMapItemId: () => { },
contributionState: {
@@ -19,6 +28,9 @@ const initialContextValues = {
itemType: null,
},
setContributionState: () => { },
+ //set default value from local storage or default value
+ layerCheckboxStates: JSON.parse(localStorage.getItem('layerCheckboxStates') || 'null') || initializeCheckboxStates(), // Default value, if we add more than 20 layers we need to update this
+ saveLayerCheckboxState: () => { },
};
export const UserContext =
@@ -27,9 +39,10 @@ export const UserContext =
export const UserContextProvider = ({ children }) => {
const [isOnStartup, setIsOnStartup] = useState(true);
const [isMobile, setIsMobile] = useState(initialContextValues.isMobile);
- const [isDebugMode, setIsDebugMode] = useState(initialContextValues.isDebugMode);
- const [initiallySharedMapItemId, setInitialSharedMapItemId] = useState(initialContextValues.initiallySharedMapItemId);
+ const [isDebugMode, setIsDebugModeState] = useState(initialContextValues.isDebugMode);
const [sharedMapItemId, setMapItemId] = useState(null);
+ const [layerCheckboxStates, setLayerCheckboxState] = useState(initialContextValues.layerCheckboxStates ?? initialContextValues.layerCheckboxStates);
+
const [contributionState, setContributionStateState] = useState<{
isIntel: boolean;
isContributing: boolean;
@@ -57,20 +70,17 @@ export const UserContextProvider = ({ children }) => {
const setSharedMapItemId = (id: string | undefined) => {
if (id) {
- window.history.replaceState(null, "", `/${id}`);
if (isDebugMode) {
- console.log('Setting url to: ', id);
+ console.log('Setting sharedMapItemId to: ', id);
}
setMapItemId(id);
}
};
- const setInitiallySharedMapItemId = (id: string | undefined) => {
- if (isDebugMode) {
- console.log('Setting setInitiallySharedMapItemId to: ', id);
- }
- setInitialSharedMapItemId(id || null);
- }
+ const setIsDebugMode = (state: boolean) => {
+ localStorage.setItem('isDebugMode', JSON.stringify(state));
+ setIsDebugModeState(state);
+ };
useEffect(() => {
const handleResize = () => setIsMobile(window.innerWidth <= 768);
@@ -79,6 +89,16 @@ export const UserContextProvider = ({ children }) => {
return () => window.removeEventListener('resize', handleResize);
}, []);
+ const saveLayerCheckboxState = (layer: string, state: boolean) => {
+ const updatedLayerCheckboxStates = layerCheckboxStates;
+ updatedLayerCheckboxStates[layer] = state;
+ setLayerCheckboxState(updatedLayerCheckboxStates);
+ localStorage.setItem('layerCheckboxStates', JSON.stringify(updatedLayerCheckboxStates));
+ if (isDebugMode) {
+ console.log('UPDATED layerCheckboxStates', updatedLayerCheckboxStates);
+ }
+ };
+
return (
{
setIsMobile,
isDebugMode,
setIsDebugMode,
- initiallySharedMapItemId,
- setInitiallySharedMapItemId,
sharedMapItemId,
setSharedMapItemId,
contributionState,
setContributionState,
+ layerCheckboxStates,
+ saveLayerCheckboxState
}}
>
{children}
@@ -107,4 +127,4 @@ export const useUserContext = () => {
throw new Error('useUserContext must be used within a UserProvider');
}
return context;
-};
+};
\ No newline at end of file
diff --git a/src/data/dataAccessLayer.ts b/src/data/dataAccessLayer.ts
index 72141227..a362c57b 100644
--- a/src/data/dataAccessLayer.ts
+++ b/src/data/dataAccessLayer.ts
@@ -1,10 +1,8 @@
import { db, DeclassifiedUserPreferences } from './db';
-import { MapIds } from './intel';
const defaultUsername = 'defaultUser';
const defaultUserPrefs: DeclassifiedUserPreferences = {
username: defaultUsername,
- currentMap: MapIds.dieMaschine,
challengeTrackerState: '',
darkMode: true,
hideBugRepButton: false,
diff --git a/src/data/db.ts b/src/data/db.ts
index 5864a1e1..fbcabf61 100644
--- a/src/data/db.ts
+++ b/src/data/db.ts
@@ -2,7 +2,6 @@ import Dexie, { type EntityTable } from 'dexie';
interface DeclassifiedUserPreferences {
username: string; // TODO - Use this as a feature to allow multiple users to have their own preferences
- currentMap: string;
challengeTrackerState: string;
darkMode: boolean;
hideBugRepButton: boolean;
@@ -33,7 +32,7 @@ const db = new Dexie('DeclassifiedV1') as Dexie & {
// Schema declaration:
db.version(1).stores({
userPrefs:
- '&username, currentMap, challengeTrackerState, darkMode, hideBugRepButton, hideIntel, hideMisc, useSystemTheme',
+ '&username, challengeTrackerState, darkMode, hideBugRepButton, hideIntel, hideMisc, useSystemTheme',
intelCollected: '&intelId, dateCollected',
challenges: '&challengeId, isCompleted, isPinned, dateCompleted, datePinned',
});
diff --git a/src/data/doors.tsx b/src/data/doors.tsx
new file mode 100644
index 00000000..7ee33eb3
--- /dev/null
+++ b/src/data/doors.tsx
@@ -0,0 +1,83 @@
+import { MiscMarker } from "../classes";
+import { MapIds } from "./intel";
+import { MarkerStore, MiscTypes } from "./types";
+
+
+// Used to generate IDs for all of the below misc markers:
+// https://nanoid.jormaechea.com.ar/?alphabet=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz&length=5
+// Please use the existing settings included in the URL and check for duplicate ids when possible (it`s very very unlikely but still possible).
+// Non collectible items that need icons on the respective maps
+
+/////////////////////Round Based Misc Items/////////////////////////
+export const DoorStore: MarkerStore = {
+ /////////////////////Bo6 Items/////////////////////////
+ [MapIds.libertyFalls]: [
+ new MiscMarker(`eznoZ`, MiscTypes.door, [241.00316487358356, 281.4319355180847]),
+ new MiscMarker(`YVX1t`, MiscTypes.door, [223.23959911864264, 304.67125670801784]),
+ new MiscMarker(`bIFAl`, MiscTypes.door, [229.3034757756142, 327.2518894802814]),
+ new MiscMarker(`Us4er`, MiscTypes.door, [251.22318106238743, 366.9163116763981]),
+ new MiscMarker(`_JBkw`, MiscTypes.door, [295.14523598775605, 319.3908869231275]),
+ new MiscMarker(`oObW4`, MiscTypes.door, [302.32504150392526, 273.716277985651]),
+ new MiscMarker(`q8M2E`, MiscTypes.door, [324.63397937808065, 335.04635432377677]),
+ new MiscMarker(`_13bg`, MiscTypes.door, [258.2520814892866, 328.17234136213443]),
+ new MiscMarker(`93OQi`, MiscTypes.door, [235.49762093035028, 334.63416632668674]),
+ new MiscMarker(`LvUR1`, MiscTypes.door, [248.15625, 314.09375]),
+ new MiscMarker(`CZ9QV`, MiscTypes.door, [165.49959808262045, 338.1174584483644]),
+ new MiscMarker(`i7idT`, MiscTypes.door, [172.4791113072325, 269.0818319557974]),
+ new MiscMarker(`7wbDr`, MiscTypes.door, [192.35468820444106, 131.41311162858815]),
+ new MiscMarker(`FyQUj`, MiscTypes.door, [222.44929392091163, 84.51568438708819]),
+ new MiscMarker(`OcT3e`, MiscTypes.door, [174.2979247745587, 186.33576706114695]),
+ new MiscMarker(`XYMOz`, MiscTypes.door, [241.25209442885952, 314.30277205618233]),
+ ],
+ [MapIds.terminusBiolabs]: [
+ new MiscMarker(`_dCtL`, MiscTypes.door, [288.84375, 250.78125]),
+ new MiscMarker(`EOPEV`, MiscTypes.door, [287.78125, 301.9375]),
+ new MiscMarker(`83JFo`, MiscTypes.door, [232.50655418257475, 261.69066863109407]),
+ new MiscMarker(`Ux5Fy`, MiscTypes.door, [239.03697280313114, 286.2718237163247]),
+ new MiscMarker(`1x0mx`, MiscTypes.door, [287.04117343836907, 276.70301654973383], { uniqueTitle: `Inclined Lift` }),
+ new MiscMarker(`D5MbG`, MiscTypes.doorPower, [230.77608506070993, 270.38500473724457]),
+ new MiscMarker(`cULPN`, MiscTypes.doorPower, [262.59872235828027, 322.96031472747234], { uniqueTitle: `Boat Door` }),
+ new MiscMarker(`puX03`, MiscTypes.doorPower, [259.50325608293707, 232.50391134799926], { uniqueTitle: `Boat Door` }),
+ ],
+ [MapIds.terminusPrison]: [
+ new MiscMarker(`CTP4L`, MiscTypes.door, [283.13496536547103, 298.7052786620223]),
+ new MiscMarker(`3sMT0`, MiscTypes.door, [286.55652377111375, 266.42837660123934]),
+ new MiscMarker(`Tcos8`, MiscTypes.door, [241.84375, 286.6875]),
+ new MiscMarker(`ft64F`, MiscTypes.door, [245.34375, 277.21875]),
+ new MiscMarker(`MArfW`, MiscTypes.door, [238.28125, 239.09375]),
+ new MiscMarker(`Z3MPg`, MiscTypes.door, [238.35490492396977, 302.0274755370141]),
+ new MiscMarker(`a5ru5`, MiscTypes.door, [225.36336206270096, 301.74249194838507]),
+ new MiscMarker(`rhih5`, MiscTypes.door, [271.55219005823653, 276.45691874285905], { uniqueTitle: `Inclined Lift` }),
+ new MiscMarker(`mTnUT`, MiscTypes.doorPower, [211.83383472310055, 270.9445225243447]),
+ new MiscMarker(`FTNny`, MiscTypes.doorPower, [212.04507005770893, 288.4066435186371]),
+ new MiscMarker(`p25xL`, MiscTypes.doorPower, [301.79623492671783, 269.34795885490774]),
+ new MiscMarker(`2bDxl`, MiscTypes.doorPower, [285.4902945141612, 286.09017860960637]),
+ new MiscMarker(`k_wfq`, MiscTypes.doorPower, [249.17003928084094, 296.2336733144075]),
+ new MiscMarker(`pWDOG`, MiscTypes.doorPower, [250.20620271842816, 250.86062173164112]),
+ new MiscMarker(`h9zst`, MiscTypes.doorPower, [259.4226038211776, 243.82561733960162]),
+ ],
+ [MapIds.citadelle]: [
+ new MiscMarker(`fVqIz`, MiscTypes.door, [100.49179147287857, 182.50233393925075]),
+ new MiscMarker(`lk6Zp`, MiscTypes.door, [107.46485256515149, 254.60080990808527]),
+ new MiscMarker(`quoLz`, MiscTypes.door, [107.46485256515149, 265.82848107160856]),
+ new MiscMarker(`tBATP`, MiscTypes.door, [232.08788853302397, 272.1633978120472]),
+ new MiscMarker(`drnEC`, MiscTypes.door, [230.90216175213448, 165.6553340622634]),
+ new MiscMarker(`PqheC`, MiscTypes.door, [291.3809548549552, 263.63290356829134]),
+ new MiscMarker(`0ENcs`, MiscTypes.door, [291.7321396217922, 175.13652781961594]),
+ new MiscMarker(`8vhuU`, MiscTypes.door, [302.1520136932104, 219.18459382284507]),
+ new MiscMarker(`ZRTqw`, MiscTypes.door, [373.68956210655614, 232.90043957126852]),
+ new MiscMarker(`FryMW`, MiscTypes.door, [374.76531471427563, 205.3342789984567]),
+ new MiscMarker(`Hubjx`, MiscTypes.door, [384.0436809558562, 190.9460878702086]),
+ new MiscMarker(`QG12v`, MiscTypes.door, [418.4677644028797, 151.6811176884474]),
+ new MiscMarker(`wunck`, MiscTypes.door, [355.3283252215737, 240.84348826739088]),
+ new MiscMarker(`VOQd7`, MiscTypes.door, [388.82311498061483, 253.24896595592463]),
+ new MiscMarker(`PgXbW`, MiscTypes.door, [426.57121137572466, 275.4016046854492]),
+ new MiscMarker(`lQxZL`, MiscTypes.door, [385.44704937632633, 265.69159012662635]),
+ new MiscMarker(`nm_2B`, MiscTypes.door, [379.87309993311044, 458.5840223736749]),
+ new MiscMarker(`_UWlg`, MiscTypes.door, [322.2756223532124, 413.31679659240604]),
+ new MiscMarker(`Ij7m9`, MiscTypes.door, [304.5403286702526, 398.1151162927262]),
+ new MiscMarker(`7BTXd`, MiscTypes.door, [336.6327648584656, 354.87478121808135]),
+ new MiscMarker(`c3F0Y`, MiscTypes.door, [336.46385729958024, 341.1932689483695]),
+ new MiscMarker(`42_CU`, MiscTypes.door, [373.2857051365825, 304.0336059935966]),
+ ]
+};
\ No newline at end of file
diff --git a/src/data/easterEggs.tsx b/src/data/easterEggs.tsx
index c500a261..bf25730c 100644
--- a/src/data/easterEggs.tsx
+++ b/src/data/easterEggs.tsx
@@ -80,6 +80,9 @@ const markers = {
instaKill: new Item({
title: `Insta Kill`, icon: IconFileNames.instaKill,
}),
+ fireSale: new Item({
+ title: `Fire Sale`, icon: IconFileNames.fireSale,
+ }),
randomPerk: new Item({
title: `Random Perk`, icon: IconFileNames.randomPerk,
}),
@@ -174,6 +177,14 @@ const markers = {
culinaryDelightIngredient: new Item({
title: `Culinary Delight - Ingredient`, desc: `An ingredient involved in the Culinary Delight side egg.`, icon: IconFileNames.interactable,
}),
+ // Citadelle Des Morts
+ cannonPart: new Item({
+ title: `Cannon Upgrade Part`, icon: IconFileNames.interactable,
+ }),
+ mrPeeksHideNSeek: new Item({ title: `Mr Peeks - Hide 'N Seek!`, desc: 'Find all Mr Peeks dolls in a specific order, to unlock a free perk! Originally found by one of the creators!', icon: IconFileNames.mrPeeks, }),
+ cannonEgg: new Item({
+ title: `Clock Tower Monkey Bomb`, icon: IconFileNames.interactable,
+ }),
};
// Used to generate IDs for all of the below misc markers:
@@ -460,6 +471,7 @@ export const StaticEggStore: MarkerStore = {
new MiscMarker(`W_IvO`, markers.doublePoints, [316.3963689820304, 180.48306806482694], { uniqueDesc: `Up on the water tower, shoot or grenade it to spawn a free power up.` }),
new MiscMarker(`BZuaH`, markers.maxArmour, [317.1206977585009, 266.7174080485405], { uniqueDesc: `Through the barricade in the bottom right corner of the room on a tray.`, img: `2te9o40` }),
new MiscMarker(`wwGl1`, markers.fullPower, [142.8486545607668, 226.59081368495958], { uniqueDesc: `Behind the barrier between the cars. Might need to go up on top of the verge by the scope in order to see it.` }),
+ new MiscMarker(`GrnIU`, markers.fireSale, [183.74874653681505, 199.47129553364073], { uniqueDesc: `Only appears after shooting all 7 other power ups.\nInside the bin.` }),
new MiscMarker(`W0cQ7`, markers.bonus, [182.19997530423058, 134.13828286183295], { uniqueTitle: `Falling Zombies!`, uniqueDesc: `Cook a grenade and throw it at the zombie head on the roof to trigger a zombie rain that drop loot.` }),
new MiscMarker(`uqQGR`, markers.mrPeeksBowling, [130.4233520842571, 270.3960054771881], { uniqueDesc: `After shooting all the shoes you will be teleported here to bowl! Score 300 for a darkops challenge, you'll always get a reward.` }),
new MiscMarker(`C1_lA`, markers.mrPeeksBowlingShoe, [263.07941062405075, 71.73609264466869], { uniqueDesc: `Outside the map hanging from a tree.\nShoot all of them to be teleported to a game of bowling for a reward!` }),
@@ -529,5 +541,23 @@ export const StaticEggStore: MarkerStore = {
new MiscMarker(`sesSc`, markers.meteorTower, [313.01988207230005, 260.52399603518677], { linkedItems: `3ZEt8`, uniqueDesc: `Visible from the stairs south of spawn, either side.` }),
new MiscMarker(`wer5F`, markers.maxArmour, [285.2117140929566, 261.9035177539375], { uniqueDesc: `In back left the corner of the interrogation room inside a bucket.` }),
new MiscMarker(`jYMo6`, markers.maxAmmo, [280.5586664702618, 271.8260457258232], { uniqueDesc: `In the guard tower, can be shot from south side, or hit with explosives from spawn side.` }),
+ new MiscMarker(`R2HHT`, markers.fireSale, [291.875, 281.8125], { uniqueDesc: `Only appears after shooting all 7 other power ups.\nInside the zombie spawn area, to the left hand side.` }),
+ ],
+ [MapIds.citadelle]: [
+ new MiscMarker(`WAuh7`, markers.cannonPart, [55.356495828412775, 215.06621647574312], { uniqueTitle: `Cannon Part - Wheel`, uniqueDesc: `Inside a box of banana's at spawn, only appears after turning the cannon the first time.`, linkedItems: `8A54Q` }),
+ new MiscMarker(`OQb8p`, markers.cannonPart, [452.7139095318371, 267.30296959540743], { uniqueTitle: `Cannon Part - Blowtorch`, uniqueDesc: `In the back right corner of the dining hall, beside the standing light.`, linkedItems: `8A54Q` }),
+ new MiscMarker(`9PVYZ`, markers.cannonEgg, [50.716709743542346, 232.2881346817492], { uniqueDesc: `Requires a lot of patience and 50k essence. You must go through the cannon 100 times total, on the 100th firing you will fly into the bell and it will drop 2 monkey bombs and behave as a monkey bomb for a prolonged time.`, linkedItems: `8A54Q` }),
+ new MiscMarker(`2hPGY`, markers.mrPeeksHideNSeek, [274.9339382527714, 175.17588285723193], { uniqueTitle: `Free Perk - Peeks #1`, uniqueDesc: `Can only be seen and shot through the window from inside, must be the first one shot.` }),
+ new MiscMarker(`rsSfg`, markers.mrPeeksHideNSeek, [212.94478731131198, 211.63320047876994], { uniqueTitle: `Free Perk - Peeks #2`, uniqueDesc: `Can be seen from inside the barn, inside the castle wall, far away from the barn. A scope is recommended but not required, must be the second one shot. Listen for the audio queue and pink light.` }),
+ new MiscMarker(`gzyWO`, markers.mrPeeksHideNSeek, [468.1521385344881, 217.2399669136197], { uniqueTitle: `Free Perk - Peeks #3`, uniqueDesc: `In the window of a tower far in the distance. Similar to #2, a scope is recommended but not required.` }),
+ new MiscMarker(`aEKQ6`, markers.mrPeeksHideNSeek, [363.0794046143011, 467.78574547136486], { uniqueTitle: `Free Perk - Peeks #4`, uniqueDesc: `Final location, sat on the bench inside the cell.` }),
+ new MiscMarker(`Dxa_p`, markers.maxAmmo, [194.21912956177317, 326.5493771655113], { uniqueDesc: `On a windowsill beneath the lighting rod antenna.` }),
+ new MiscMarker(`0vAV9`, markers.maxArmour, [337.0669348876571, 219.78489385812136], { uniqueDesc: `High up in the rafters. Against a vertical beam.` }),
+ new MiscMarker(`21_Yw`, markers.instaKill, [157.95748405308314, 238.17956014301313], { uniqueDesc: `Up on the scaffolding. Can be seen from the stairs.` }),
+ new MiscMarker(`932Ke`, markers.doublePoints, [445.670754224332, 204.0609344031147], { uniqueDesc: `Low to the ground, on a shelf on the left side inside the zombie spawn.` }),
+ new MiscMarker(`exYPu`, markers.fullPower, [397.7516315336668, 253.32894063964844], { uniqueDesc: `Up on the roof, balancing on a broken wooden beam.` }),
+ new MiscMarker(`VY87x`, markers.nuke, [219.35233018019147, 136.03922734946804], { uniqueDesc: `Can be seen out in the distance against the castle walls when viewing from the barn gate next to the ammo box.` }),
+ new MiscMarker(`t6inq`, markers.bonusPoints, [315.6406753213818, 396.0295154596503], { uniqueDesc: `Behind the back of the sofa.` }),
+ new MiscMarker(`9ZtlS`, markers.fireSale, [153.85879467104604, 305.31552106045706], { uniqueDesc: `Only appears after shooting all 7 other power ups.\nInside the well.` }),
]
};
\ No newline at end of file
diff --git a/src/data/icons.tsx b/src/data/icons.tsx
index 03b53b91..a34a0808 100644
--- a/src/data/icons.tsx
+++ b/src/data/icons.tsx
@@ -34,6 +34,8 @@ export enum IconFileNames {
mask = 'secret_door', // Update with new icon
shovel = 'shovel',
boss = 'boss',
+ sword = 'sword',
+ swordUpgrade = 'sword_upgrade',
//movement icons
rift = 'tunnel_pink',
@@ -68,7 +70,7 @@ export enum IconFileNames {
maxArmour = 'max_armor',
doublePoints = 'double_points',
instaKill = 'insta_kill',
- fireSale = 'fire_sale',// TODO - Make SVG?
+ fireSale = 'fire_sale',
randomPerk = 'random_perk',
//perk icons // Update with new icons
@@ -84,6 +86,7 @@ export enum IconFileNames {
deadshotDaiquiri = 'deadshot_daiquiri',
phdSlider = 'phd_slider',
meleeMacchiato = 'melee_macchiato',
+ vulture = 'vulture_aid',
}
diff --git a/src/data/intel.tsx b/src/data/intel.tsx
index 2611a39a..f3f9c959 100644
--- a/src/data/intel.tsx
+++ b/src/data/intel.tsx
@@ -1,4 +1,5 @@
import { LatLngExpression } from 'leaflet';
+import { MapId, MapIds } from '../components/MapControls/MapIds';
interface IDefaultPOIData {
challenge: string;
@@ -16,50 +17,6 @@ export const DefaultPOIData: IDefaultPOIData = {
nullLoc: [0, 0],
};
-export enum MapIds {
- allOutbreakMaps = `outbreak`,
- zoo = `zoo`,
- ruka = `ruka`,
- duga = `duga`,
- alpine = `alpine`,
- golova = `golova`,
- sanatorium = `sanatorium`,
- collateral = `collateral`,
- armada = `armada`,
- dieMaschine = `dieMaschine`,
- dieMaschineUnderground = `dieMaschine_underground`,
- firebaseZ = `firebaseZ`,
- firebaseZSpawn = `firebaseZ_spawn`,
- mauerDerToten = `mauerDerToten`,
- mauerDerTotenStreets = `mauerDerToten_streets`,
- forsaken = `forsaken`,
- forsakenUnderground = `forsaken_underground`,
- miami = `miami`,
- satellite = `satellite`,
- moscow = `moscow`,
- nuketown = `nuketown`,
- thePines = `thePines`,
- express = `express`,
- rush = `rush`,
- echelon = `echelon`,
- driveIn = `driveIn`,
- cartel = `cartel`,
- crossroads = `crossroads`,
- raid = `raid`,
- apocalypse = `apocalypse`,
- yamantau = `yamantau`,
- standoff = `standoff`,
- collateralOn = `collateralOn`,
- checkmate = `checkmate`,
- garrison = `garrison`,
- deprogram = `deprogram`,
- //b06
- libertyFalls = `liberty_falls`,
- terminusBiolabs = `terminusBiolabs`,
- terminusPrison = `terminusPrison`,
- terminusIslands = `terminusBiolabs`, // TODO: change thisto be unique when the refactoring for multiple layer markers is done
-}
-
export enum Faction {
Requiem = `Requiem`,
Omega = `Omega`,
@@ -143,7 +100,7 @@ export class IntelItem implements IIntelItem {
season!: Season;
typeDesc!: IntelType;
loc!: LatLngExpression;
- map!: MapIds | undefined;
+ map!: MapId | undefined;
title!: string;
desc!: string;
img?: string | undefined;
@@ -164,6 +121,238 @@ export class IntelItem implements IIntelItem {
const staticIntelStore: IIntelItem[] = [
// TODO: Refactor this out into its own BO6 Intel list and clean up the constructor to make faction a non issue
/////////////////////Black Ops 6/////////////////////////
+ /////////////////////Citadelle/////////////////////////
+ {
+ id: `BO6S1CAu1`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Audio,
+ loc: [237.17900824189033, 253.2549143097046],
+ map: MapIds.citadelle,
+ title: `Good Afternoon Mr.Richtofen`,
+ desc: `On a crate next to the right entrance to the courtyard, on the right side coming from the village.`,
+ img: `10mXIgQ`,
+ },
+ {
+ id: `BO6S1CAu2`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Audio,
+ loc: [271.89541611223524, 153.01448244970268],
+ map: MapIds.citadelle,
+ title: `You Would've Done the Same`,
+ desc: `In the hillside ramparts, on a box in the corner opposite to elemental pop.`,
+ img: `1fead803`,
+ },
+ {
+ id: `BO6S1CAu3`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Audio,
+ loc: [130.4277463404875, 180.85193167755722],
+ map: MapIds.citadelle,
+ title: `Historically Speaking`,
+ desc: `In a table in the pub top floor, next to the pool table.`,
+ img: `LKLj3Mu`,
+ },
+ {
+ id: `BO6S1CAu4`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Audio,
+ loc: [314.788227931163, 307.5907835326099],
+ map: MapIds.citadelle,
+ title: `Get It Done`,
+ desc: `On a table in the undercroft, in a corner.`,
+ img: `gVoBrrW`,
+ },
+ {
+ id: `BO6S1CAu5`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Audio,
+ loc: [308.69795327718265, 202.16464474224415],
+ map: MapIds.citadelle,
+ title: `Do Your Damn Job`,
+ desc: `In the entrance hall, left side of the door after shooting it open.`,
+ img: `JjR1jqF`,
+ },
+ {
+ id: `BO6S1CAu6`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Audio,
+ loc: [356.48219119951125, 424.9411843294237],
+ map: MapIds.citadelle,
+ title: `Fair Enough`,
+ desc: `On a shelf next to quick revive in the dungeon.`,
+ img: `QdZ4jfE`,
+ },
+ {
+ id: `BO6S1CAu7`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Audio,
+ loc: [167.02137448114985, 326.9796560116043],
+ map: MapIds.citadelle,
+ title: `Survival of the Fittest`,
+ desc: `Opposite the Lion door in the village and well, near the ammo crate.`,
+ img: `BMLH44Q`,
+ },
+ {
+ id: `BO6S1CAu8`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Audio,
+ loc: [154.81883140081982, 122.0546575475295],
+ map: MapIds.citadelle,
+ title: `The Foundling`,
+ desc: `In the hilltop, on a stone wall near the Kompakt 92 wall buy.`,
+ img: `HzlEIz2`,
+ },
+ {
+ id: `BO6S1CAu9`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Audio,
+ loc: [362.59559727242817, 173.63390153439246],
+ map: MapIds.citadelle,
+ title: `New Horizons`,
+ desc: `In an archway next to the ammo crate in the sitting rooms.`,
+ img: `Lee4TBq`,
+ },
+ {
+ id: `BO6S1CAu10`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Audio,
+ loc: [386.8785784960977, 239.6467407387063],
+ map: MapIds.citadelle,
+ title: `The Four Bastards`,
+ desc: `In the top floor of the dining hall, above the ammo crate next to some rope.`,
+ img: `3mUnHnj`,
+ },
+ {
+ id: `BO6S1CDo1`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Docs,
+ loc: [176.8630632587379, 169.3939458462175],
+ map: MapIds.citadelle,
+ title: `Family Book`,
+ desc: `Shoot a stack of papers up in the rafters.`,
+ img: `qkRltUS`,
+ },
+ {
+ id: `BO6S1CDo2`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Docs,
+ loc: [133.97653520449398, 216.31435052380724],
+ map: MapIds.citadelle,
+ title: `Some Context`,
+ desc: `Grab it from the roof of the pub whilst sliding, after being fired from the cannon.`,
+ img: `sNskyit`,
+ },
+ {
+ id: `BO6S1CDo3`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Docs,
+ loc: [152.56358549282945, 309.0457562294816],
+ map: MapIds.citadelle,
+ title: `Intake Form`,
+ desc: `Drops from the well when throwing a grenade in the well.`,
+ img: `rHBe5jL`,
+ },
+ {
+ id: `BO6S1CDo4`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Docs,
+ loc: [410.213359214897, 199.63624487112563],
+ map: MapIds.citadelle,
+ title: `Statuesque`,
+ desc: `Interact with different drawers in the alchemy lab until it drops.`,
+ img: `K3nhmy0`,
+ },
+ {
+ id: `BO6S1CAr1`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Artifact,
+ loc: [414.9190982026128, 254.16395537826983],
+ map: MapIds.citadelle,
+ title: `The Bastard Sword`,
+ desc: `Acquire any of the bastard swords from the statues using a stamp dropped from the medieval helmeted zombies that spawn on round 10.`,
+ img: `3CFgnu4`,
+ },
+ {
+ id: `BO6S1CAr2`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Artifact,
+ loc: [359.6393618745068, 219.52537395857806],
+ map: MapIds.citadelle,
+ title: `Caliburn`,
+ desc: `Acquire the sword through the Dragon sword upgrade quest.`,
+ img: `c2ItRjG`,
+ },
+ {
+ id: `BO6S1CAr3`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Artifact,
+ loc: [256.47471713594445, 157.6967812528588],
+ map: MapIds.citadelle,
+ title: `Durendal`,
+ desc: `Acquire the sword through the Stag sword upgrade main quest.`,
+ img: `F80RZgs`,
+ },
+ {
+ id: `BO6S1CAr4`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Artifact,
+ loc: [131.21974809406814, 220.4834266507181],
+ map: MapIds.citadelle,
+ title: `Balmung`,
+ desc: `Acquire the sword through the Raven sword upgrade main quest.`,
+ img: `WzChpMD`,
+ },
+ {
+ id: `BO6S1CAr5`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Artifact,
+ loc: [169.36996220522448, 305.7367286902535],
+ map: MapIds.citadelle,
+ title: `Solais`,
+ desc: `Acquire the sword through the Lion sword upgrade main quest.`,
+ img: `S2JO9eO`,
+ },
+ {
+ id: `BO6S1CAr6`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Artifact,
+ loc: [93.99040847306705, 220.07244946876693],
+ map: MapIds.citadelle,
+ title: `Obscurus Altilium`,
+ desc: `Acquire by beating the boss during the main quest.`,
+ img: `Ef8dI4l`,
+ },
+ {
+ id: `BO6S1CAr7`,
+ faction: Faction.None,
+ season: Season.Season1,
+ typeDesc: IntelType.Artifact,
+ loc: [140.4178932339102, 182.2182716666704],
+ map: MapIds.citadelle,
+ title: `Space Race`,
+ desc: `Complete the bartending easter egg and it will appear on the counter afterwards.`,
+ img: `NhMQe3g`,
+ },
/////////////////////Terminus/////////////////////////
{
id: `BO6S0TAu1`,
@@ -6727,6 +6916,8 @@ function getIntelStore(intelStore: IIntelItem[]): IntelItem[] {
export const IntelStore: IntelItem[] = getIntelStore(staticIntelStore);
+
+export { MapIds };
//Needed to parse location back from a string.
/* export const IntelCache = IntelStore.slice();
let intelFiltered = IntelCache.slice(); */
diff --git a/src/data/mainQuest.tsx b/src/data/mainQuest.tsx
index 1d77b1c4..4ae3ba68 100644
--- a/src/data/mainQuest.tsx
+++ b/src/data/mainQuest.tsx
@@ -61,7 +61,24 @@ const markers = {
maxisAmp: new Item({ title: 'Maxis Radio Amplifier', desc: 'Tune all of the 3 amplifiers to the same tone as the central radio in order to fix the radio and trigger the start of quest.', icon: IconFileNames.objective, }),
bunny: new Item({ title: 'Mr Peeks', desc: 'Used in the quest, when picked up, provides a aetherium burst ability. Must be brought to the rover to continue the quest.', icon: IconFileNames.objective, }),
// BO6 Specific
-
+ pointOfPower: new Item({
+ title: `Point Of Power Trap`, desc: `Cost: 1600\nUsed to boost your damage against and slow zombies.\nPart of the main quest, the symbol on the floor will light up with a different pattern after activating PaP.`, icon: IconFileNames.trap,
+ }),
+ bastardSword: new Item({
+ title: `Bastard Sword`, desc: `Used as part of the main quest to unlock the incantations and the Mystic Orb.`, icon: IconFileNames.sword,
+ }),
+ bastardSwordUpgrade: new Item({
+ title: `Bastard Sword Upgrade`, desc: `Upgrades the bastard sword to it's elemental variant.`, icon: IconFileNames.swordUpgrade,
+ }),
+ bastardSwordUpgradeCollectible: new Item({
+ title: `Bastard Sword Collectible`, desc: `Used as part of the sword upgrade quest.`, icon: IconFileNames.objective,
+ }),
+ ritualCollectible: new Item({
+ title: `Ritual Collectible`, icon: IconFileNames.objective,
+ }),
+ ritualStep: new Item({
+ title: `Ritual Step`, icon: IconFileNames.objective,
+ }),
};
//TODO: Think about moving all main quest steps to an ordered list so we can enforce ordering and steps etc
@@ -115,7 +132,7 @@ export const StaticQuestStore: MarkerStore = {
new MiscMarker(`sHpo9`, markers.darkAetherPortal, [311.82894335858725, 299.6633680932173], { uniqueDesc: `Spawns after building the aetherscope. Used to get the diary and trigger the first of the ghostly dialogues.` }),
new MiscMarker(`fwG9Z`, markers.mainQuest, [329.39656431710233, 325.66999226629395], { uniqueTitle: `Ghostly Dialogue`, uniqueDesc: `Appears after entering the portal that appears after shooting after shooting all 4 canisters of the containment device\nSpawns the Dark Aether Wrench.` }),
new MiscMarker(`UyMmA`, markers.mainQuest, [310.66531882982684, 339.46395788705297], { uniqueTitle: `Containment Device`, uniqueDesc: `Up on the roof with four canisters pointing down. Shoot each one with the corresponding elemental version of the D.I.E\nAfter placing the decontamination agent, this will allow you to trap both halves of a Megaton. Furthering the main quest.` }),
- new MiscMarker(``, markers.bossFight, [188.234154595668, 343.69573623599854], { uniqueTitle: `Defend Orlov`, uniqueDesc: `Once you pick up the family photo you are teleported into the particle accelerator room and must defend Orlov whilst he shuts down the station.`, linkedItems: `TbPJZ` }),
+ new MiscMarker(`rRnc1`, markers.bossFight, [188.234154595668, 343.69573623599854], { uniqueTitle: `Defend Orlov`, uniqueDesc: `Once you pick up the family photo you are teleported into the particle accelerator room and must defend Orlov whilst he shuts down the station.`, linkedItems: `TbPJZ` }),
],
[MapIds.firebaseZSpawn]: [
new MiscMarker(`sdUX5`, markers.mainQuest, [382.9324256232408, 267.11524328413856], { uniqueTitle: `Sergei Ravenov`, uniqueDesc: `Must be interacted with to start the main quest.` }),
@@ -339,19 +356,86 @@ export const StaticQuestStore: MarkerStore = {
],
[MapIds.terminusBiolabs]: [
new MiscMarker(`HfuK3`, markers.bossFight, [327.2210225067579, 277.0954343324285], { uniqueTitle: `Final Fight`, uniqueDesc: `After defeating Nathan and defusing the bombs.` }),
- new MiscMarker(`hDBzb`, markers.bossFight, [303.5568376364614, 276.72878485193456], { uniqueTitle: `Nathan`, uniqueDesc: `After obtaining the hard drive in the main quest, open his cage using 3 numbers found around the map in this order: Interrogation Rooms, Food Hall, Engineering.` }),
+ new MiscMarker(`hDBzb`, markers.bossFight, [303.5568376364614, 276.72878485193456], { linkedItems: `CjGiW,VkRsN,7G0o1`, uniqueTitle: `Nathan`, uniqueDesc: `After obtaining the hard drive in the main quest, open his cage using 3 numbers found around the map in this order: Interrogation Rooms, Food Hall, Engineering.\nOnce entered you'll need to open the cage all at the same time if playing with multiple players.` }),
new MiscMarker(`B1eCK`, markers.wonderWeaponStep, [284.7725288507301, 392.2537610808635], { linkedItems: `MFkM_`, uniqueTitle: `Orb #1 - Blue`, uniqueDesc: `Spawns after waiting for the resonator to calibrate at round 9.\n1 of 3, energetic orbs that charge a zombie with energy, the energy packet that is dropped must be carried to the orb.` }),
new MiscMarker(`H01OH`, markers.wonderWeaponStep, [136.17720324583186, 260.8916789457183], { linkedItems: `B1eCK`, uniqueTitle: `Orb #2 - Green`, uniqueDesc: `2 of 3, energetic orbs that charge a zombie with energy, the energy packet that is dropped must be carried to the orb.` }),
new MiscMarker(`1z76S`, markers.wonderWeaponCollectible, [397.9117982033145, 201.5820329335165], { linkedItems: `H01OH`, uniqueTitle: `AMP Munition & Orb #3 - Purple`, uniqueDesc: `3 of 3, once finished the AMP munition can be picked straight up off the floor where the orb was.` }),
- new MiscMarker(`kpoPI`, markers.wonderWeaponStep, [223.75, 275.5625], { linkedItems: ``, uniqueTitle: `Harmonic Triangulator`, uniqueDesc: `1 of 3 computers that must be activated after plugging the injector into the resonator, the diagram representing the number (X, Y or Z) will appear as a yellow note below the resonator when activated. We recommend the following calculator if you're struggling: \nhub.tcno.co/games/bo6/terminus/` }),
+ new MiscMarker(`kpoPI`, markers.wonderWeaponStep, [223.75, 275.5625], { linkedItems: `MFkM_`, uniqueTitle: `Harmonic Triangulator`, uniqueDesc: `1 of 3 computers that must be activated after plugging the injector into the resonator, the diagram representing the number (X, Y or Z) will appear as a yellow note below the resonator when activated. We recommend the following calculator if you're struggling:`, externalLinks: `hub.tcno.co/games/bo6/terminus/` }),
+ new MiscMarker(`CPqC_`, markers.questCollectible, [295.375, 292.75], { linkedItems: `BO6S0TAr2,hDBzb`, uniqueTitle: `Keycard`, uniqueDesc: `Found in the water after defeating Nathan. Used to open the secret door underneath the cargo ship.` }),
+ new MiscMarker(`vKqWW`, markers.secretArea, [226.6600102503698, 131.84035663886576], { linkedItems: `CPqC_`, uniqueTitle: `Node Connector Lockdown Room`, uniqueDesc: `Only accessible after obtaining the keycard. Climb the ladder to get inside. Must remain in this room and defeat zombies until the lockdown ends. Lockdown starts when you pick up a Node Connector.` }),
+ new MiscMarker(`gJNh7`, markers.questCollectible, [223.42015876022728, 124.8854754400265], { linkedItems: `sAcWz,CzhcI,U14_m`, uniqueTitle: `Node Connector`, uniqueDesc: `1 of 2\nFound inside the cargo ship. Must be taken to the 2 empty sections of the 3 total Node Connector points.` }),
+ new MiscMarker(`sAcWz`, markers.mainQuest, [136.10428195026734, 204.40524245364648], { linkedItems: `gJNh7`, uniqueTitle: `Node Connector Section`, uniqueDesc: `1 of 3\nIf empty will need to be repaired with 1 of the 2 Node Connectors.` }),
+ new MiscMarker(`CzhcI`, markers.mainQuest, [212.58314921057286, 306.68622849204047], { linkedItems: `gJNh7`, uniqueTitle: `Node Connector Section`, uniqueDesc: `1 of 3\nIf empty will need to be repaired with 1 of the 2 Node Connectors.` }),
+ new MiscMarker(`U14_m`, markers.mainQuest, [260.1956545572801, 256.72058738456184], { linkedItems: `gJNh7`, uniqueTitle: `Node Connector Section`, uniqueDesc: `1 of 3\nIf empty will need to be repaired with 1 of the 2 Node Connectors.` }),
+ new MiscMarker(`rhX1n`, markers.mainQuest, [153.15786916316517, 174.7691022352682], { linkedItems: `RpokI`, uniqueTitle: `Hacking Buoy`, uniqueDesc: `1 of 3\nCan be hacked after obtaining the Hacking Device from Peck and Strauss. Must be done under a timer and will spawn parasites.` }),
+ new MiscMarker(`pEAjE`, markers.mainQuest, [396.16910225823494, 257.21374134292336], { linkedItems: `RpokI`, uniqueTitle: `Hacking Buoy`, uniqueDesc: `1 of 3\nCan be hacked after obtaining the Hacking Device from Peck and Strauss. Must be done under a timer and will spawn parasites.` }),
+ new MiscMarker(`5wus2`, markers.mainQuest, [194.92670670317787, 372.92429495818897], { linkedItems: `RpokI`, uniqueTitle: `Hacking Buoy`, uniqueDesc: `1 of 3\nCan be hacked after obtaining the Hacking Device from Peck and Strauss. Must be done under a timer and will spawn parasites.` }),
+ new MiscMarker(`EajSJ`, markers.mainQuest, [313.2611643581533, 249.5642753732451], { uniqueTitle: `Bomb Defusal`, uniqueDesc: `1 of 3\nMust be defused directly after the hacking step. You will be timed, use distractions or field upgrades to buy time and defuse. The progress does not reset so keep going until all 3 are done.` }),
+ new MiscMarker(`apKMt`, markers.mainQuest, [313.53603670117946, 303.7654809356315], { uniqueTitle: `Bomb Defusal`, uniqueDesc: `1 of 3\nMust be defused directly after the hacking step. You will be timed, use distractions or field upgrades to buy time and defuse. The progress does not reset so keep going until all 3 are done.` }),
+ new MiscMarker(`pzVxm`, markers.mainQuest, [328.84375, 277.03125], { uniqueTitle: `Bomb Defusal`, uniqueDesc: `1 of 3\nMust be defused directly after the hacking step. You will be timed, use distractions or field upgrades to buy time and defuse. The progress does not reset so keep going until all 3 are done.` }),
],
[MapIds.terminusPrison]: [
new MiscMarker(`Ou1IZ`, markers.secretArea, [253.5625, 273.53125], { uniqueTitle: `Aanya Tonovsky's Lab`, uniqueDesc: `Can be opened by shooting electrical boxes on a weapon with deadwire equipped, whilst riding the inclined lift up from biolabs.` }),
new MiscMarker(`qqgUA`, markers.wonderWeaponCollectible, [257.59375, 272.625], { linkedItems: `YPTol`, uniqueTitle: `Briefcase Chip`, uniqueDesc: `An electronic chip used to open the briefcase in the Sea Tower.` }),
new MiscMarker(`YPTol`, markers.wonderWeaponCollectible, [205.0625, 298.78125], { linkedItems: `MFkM_`, uniqueTitle: `Multiphasic Injector`, uniqueDesc: `A briefcase chained to Aanya's hand. Opens when interacting with it, only after obtaining the chip.` }),
- new MiscMarker(`MFkM_`, markers.wonderWeaponStep, [256.0625, 275.71875], { linkedItems: `kpoPI,LfFld,Mf27c`, uniqueTitle: `Multiphasic Resonator`, uniqueDesc: `A machine that is used to begin the orb step. Plug in the Multiphasic Injector and then activate the 3 Harmonic Triangulators around the map. return when you have activated all 3 and input the code, calculated using the information on the whiteboards. We recommend the following calculator if you're struggling: \nhub.tcno.co/games/bo6/terminus/` }),
- new MiscMarker(`Mf27c`, markers.wonderWeaponStep, [277.25, 259.375], { linkedItems: ``, uniqueTitle: `Harmonic Triangulator`, uniqueDesc: `1 of 3 computers that must be activated after plugging the injector into the resonator, the diagram representing the number (X, Y or Z) will appear as a yellow note below the resonator when activated. We recommend the following calculator if you're struggling: \nhub.tcno.co/games/bo6/terminus/` }),
- new MiscMarker(`LfFld`, markers.wonderWeaponStep, [273.5625, 287.96875], { linkedItems: ``, uniqueTitle: `Harmonic Triangulator`, uniqueDesc: `1 of 3 computers that must be activated after plugging the injector into the resonator, the diagram representing the number (X, Y or Z) will appear as a yellow note below the resonator when activated. We recommend the following calculator if you're struggling: \nhub.tcno.co/games/bo6/terminus/` }),
- new MiscMarker(`da69a`, markers.questCollectible, DefaultPOIData.nullLoc, { linkedItems: ``, uniqueTitle: `Hard Drive`, uniqueDesc: `Can be found in any of 4 locations. Required to progress the main quest and find Nathan.` }),
+ new MiscMarker(`MFkM_`, markers.wonderWeaponStep, [256.0625, 275.71875], { linkedItems: `kpoPI,LfFld,Mf27c`, uniqueTitle: `Multiphasic Resonator`, uniqueDesc: `A machine that is used to begin the orb step. Plug in the Multiphasic Injector and then activate the 3 Harmonic Triangulators around the map. return when you have activated all 3 and input the code, calculated using the information on the whiteboards. We recommend the following calculator if you're struggling:`, externalLinks: `hub.tcno.co/games/bo6/terminus/` }),
+ new MiscMarker(`Mf27c`, markers.wonderWeaponStep, [277.25, 259.375], { linkedItems: `MFkM_`, uniqueTitle: `Harmonic Triangulator`, uniqueDesc: `1 of 3 computers that must be activated after plugging the injector into the resonator, the diagram representing the number (X, Y or Z) will appear as a yellow note below the resonator when activated. We recommend the following calculator if you're struggling:`, externalLinks: `hub.tcno.co/games/bo6/terminus/` }),
+ new MiscMarker(`LfFld`, markers.wonderWeaponStep, [273.5625, 287.96875], { linkedItems: `MFkM_`, uniqueTitle: `Harmonic Triangulator`, uniqueDesc: `1 of 3 computers that must be activated after plugging the injector into the resonator, the diagram representing the number (X, Y or Z) will appear as a yellow note below the resonator when activated. We recommend the following calculator if you're struggling:`, externalLinks: `hub.tcno.co/games/bo6/terminus/` }),
+ new MiscMarker(`da69a`, markers.questCollectible, DefaultPOIData.nullLoc, { linkedItems: `_lR_D,gI_wA,mnhja,zs2vI,RpokI`, uniqueTitle: `Hard Drive`, uniqueDesc: `Can be found in any of 4 locations. The one you want is already smashed and has blood and a badge below it. Use the Beamsmasher's primary fire on the trap whilst active. Required to progress the main quest and find Nathan.` }),
+ new MiscMarker(`RpokI`, markers.mainQuest, [303.9692806052967, 277.8106048830418], { uniqueTitle: `Peck & Strauss`, uniqueDesc: `Can be interacted with to complete the code for the resonator for 5000 essence.\nMust also be interacted with in order to find Nathan after obtaining the Hard Drive.\nFinally, they will provide the Hacking Device after completing the rewiring step.` }),
+ new MiscMarker(`CjGiW`, markers.clue, [284.6924857528651, 260.8233832401894], { linkedItems: `hDBzb`, uniqueTitle: `Cell Code #1 - Clock`, uniqueDesc: `The hour hand of the clock.\nA clue for one of the numbers in the 3 digit code for Nathan's cell.` }),
+ new MiscMarker(`VkRsN`, markers.clue, [245.1875, 250.1875], { linkedItems: `hDBzb`, uniqueTitle: `Cell Code #2 - Playing Card`, uniqueDesc: `The number on the playing card.\nA clue for one of the numbers in the 3 digit code for Nathan's cell.` }),
+ new MiscMarker(`7G0o1`, markers.clue, [251.87483340617834, 305.9176019845688], { linkedItems: `hDBzb`, uniqueTitle: `Cell Code #3 - Injury Sign`, uniqueDesc: `The number of days since last injury sign\n.A clue for one of the numbers in the 3 digit code for Nathan's cell.` }),
+ ],
+ [MapIds.citadelle]: [
+ new MiscMarker(`7aKbb`, markers.secretArea, [420.6982899821542, 209.87796290629709], { uniqueTitle: `Alchemical Lab`, uniqueDesc: `Walls will open up and reveal this room after activating the PaP machine.` }),
+ new MiscMarker(`Le2z8`, markers.mainQuest, [379.5781514302129, 414.1441537743096], { uniqueTitle: `Gabriel Krafft's Cell`, uniqueDesc: `Can be interacted with after activating PaP to begin the main quest and unlock some previously disabled egg steps.` }),
+ new MiscMarker(`TB1Ey`, markers.questCollectible, [368.2433698321437, 186.02154976715738], { linkedItems: `Ux1rW`, uniqueTitle: `Torn Paper #1`, uniqueDesc: `This page tells you the first Point of Power trap that needs to be completed, make a note of it if you'd like to avoid the wall step. Can be found around the hallway area.` }),
+ new MiscMarker(`lgO4Q`, markers.questCollectible, [379.4773532994321, 158.7626192950606], { linkedItems: `Ux1rW`, uniqueTitle: `Torn Paper #2`, uniqueDesc: `This page tells you the second Point of Power trap that needs to be completed, make a note of it if you'd like to avoid the wall step. Can be found around the beds area.` }),
+ new MiscMarker(`SLY7x`, markers.questCollectible, [408.2231345245523, 172.9703042683959], { linkedItems: `Ux1rW`, uniqueTitle: `Torn Paper #3`, uniqueDesc: `This page tells you the third Point of Power trap that needs to be completed, make a note of it if you'd like to avoid the wall step. Can be found around the sofa and TV area.` }),
+ new MiscMarker(`ELKta`, markers.questCollectible, [418.96150107416616, 181.56099750808698], { linkedItems: `Ux1rW`, uniqueTitle: `Torn Paper #4`, uniqueDesc: `This page tells you the final Point of Power trap that needs to be completed, make a note of it if you'd like to avoid the wall step. Can be found around the hallway area by the alchemical lab.` }),
+ new MiscMarker(`OZOnd`, markers.questCollectible, DefaultPOIData.nullLoc, { uniqueTitle: `Stamp`, uniqueDesc: `Used to unlock any of the 4 bastard swords from their pedestals.`, linkedItems: `QfxS5,KGyrV,42s5g,9C1DV`, }),
+ new MiscMarker(`QfxS5`, markers.bastardSword, [413.3523471673312, 267.3763282749791], { uniqueTitle: `The Lion`, uniqueDesc: `To upgrade you will need to kill a glowing parasite (4 of them spawn upon picking up the sword for the first time), bring the glow that will appear on your sword, and hit the lion door, located in the town with it.`, linkedItems: `SKx8c`, }),
+ new MiscMarker(`KGyrV`, markers.bastardSword, [403.27965861059096, 267.3763282749791], { uniqueTitle: `The Dragon`, uniqueDesc: `To upgrade you will need to take the sword to the dragon statue at the top of the stairs by the castle entrance.`, linkedItems: `8QlMF`, }),
+ new MiscMarker(`42s5g`, markers.bastardSword, [413.3523471673312, 241.10285219882513], { uniqueTitle: `The Raven`, uniqueDesc: `To upgrade you will need to find a statue in the Alchemical Lab with an animal part. Then head to the pub basement.`, linkedItems: `4cszs`, externalLinks: `hub.tcno.co/games/bo6/raven/` }),
+ new MiscMarker(`9C1DV`, markers.bastardSword, [403.27965861059096, 241.10285219882513], { uniqueTitle: `The Stag`, uniqueDesc: `To upgrade you will need to find all 3 lighting rods, place them in the container and complete a lockdown.`, linkedItems: `Rlskg`, }),
+ new MiscMarker(`SKx8c`, markers.bastardSwordUpgrade, [169.91139256371156, 321.3595794743913], { uniqueTitle: `Upgrade - The Lion`, uniqueDesc: `A door with a lion emblem. Once your sword is glowing from killing a glowing parasite, hit this door with it to light up 1 of 4 sybmols. After doing all 4, interact with the door to start a lockdown. Once inside place the sword in the pedestal and shoot 4 hovering symbols that appear in the order they light up on the pedestal.`, linkedItems: `QfxS5`, }),
+ new MiscMarker(`8QlMF`, markers.bastardSwordUpgrade, [359.6393618745068, 219.52537395857806], { uniqueTitle: `Upgrade - The Dragon`, uniqueDesc: `After placing the sword in the statue, bring 3 flames from brasiers around the map, back to the statue. You can melee zombies to regain health`, linkedItems: `2iUPs,mpOkM,DPIJA`, }),
+ new MiscMarker(`4cszs`, markers.bastardSwordUpgrade, [131.21974809406814, 220.4834266507181], { uniqueTitle: `Upgrade - The Raven`, uniqueDesc: `Find the circular puzzle. Place the antiquity that you picked up, then place the sword. Figure out the zodiac symbol and Aristotelian element that represents the antiquity, then align the 2 correct sybmbols. After doing this you will need to guide orbs into portals 3 times.`, linkedItems: `2ksQs`, externalLinks: `hub.tcno.co/games/bo6/raven/` }),
+ new MiscMarker(`Rlskg`, markers.bastardSwordUpgrade, [256.47471713594445, 157.6967812528588], { uniqueTitle: `Upgrade - The Stag`, uniqueDesc: `After finding .`, linkedItems: `JqsLU,hh3Pv,wb60Z`, }),
+ new MiscMarker(`2iUPs`, markers.bastardSwordUpgradeCollectible, [94.45178460028421, 169.41059021730663], { uniqueTitle: `Brasier #1`, uniqueDesc: `1 of 3\nWill be lit only after placing the sword in the statue. When interacted with will enpower the user and they must get back to the statue and interact with it.`, linkedItems: `8QlMF`, }),
+ new MiscMarker(`mpOkM`, markers.bastardSwordUpgradeCollectible, [67.50799835278339, 248.53460103762404], { uniqueTitle: `Brasier #2`, uniqueDesc: `1 of 3\nWill be lit only after placing the sword in the statue. When interacted with will enpower the user and they must get back to the statue and interact with it.`, linkedItems: `8QlMF`, }),
+ new MiscMarker(`DPIJA`, markers.bastardSwordUpgradeCollectible, [224.79227752072111, 261.33895616366], { uniqueTitle: `Brasier #3`, uniqueDesc: `1 of 3\nWill be lit only after placing the sword in the statue. When interacted with will enpower the user and they must get back to the statue and interact with it.`, linkedItems: `8QlMF`, }),
+ new MiscMarker(`2ksQs`, markers.bastardSwordUpgradeCollectible, [414.92783786723436, 210.1867410559687], { uniqueTitle: `Antiquity`, uniqueDesc: `Used for the Raven Sword upgrade.\nFound in the Alchemical Lab on any of the shelves around the room. Will be random and one of several variants. Once obtained, must be placed in the circular puzzle in the pub to activate it.`, linkedItems: `4cszs`, externalLinks: `hub.tcno.co/games/bo6/raven/` }),
+ new MiscMarker(`JqsLU`, markers.bastardSwordUpgradeCollectible, [189.7252351749281, 326.5722112559408], { uniqueTitle: `Lightning Rod #1`, uniqueDesc: `1 of 3\nCan be collected in any order`, linkedItems: `Rlskg`, }),
+ new MiscMarker(`hh3Pv`, markers.bastardSwordUpgradeCollectible, [175.5730969793589, 148.32972850592168], { uniqueTitle: `Lightning Rod #2`, uniqueDesc: `1 of 3\nCan be collected in any order`, linkedItems: `Rlskg`, }),
+ new MiscMarker(`wb60Z`, markers.bastardSwordUpgradeCollectible, [347.1359786813524, 424.00529977158135], { uniqueTitle: `Lightning Rod #3`, uniqueDesc: `1 of 3\nFound in the dungeon, drops from an armoured zombie. Can be collected in any order. `, linkedItems: `Rlskg`, }),
+ new MiscMarker(`cC4KM`, markers.ritualCollectible, [431.81941352000524, 222.23781206063748], { uniqueTitle: `Ritual Item - The Lion`, uniqueDesc: `Paladin's Brooch\nObtained by shooting each red crystal light along the walls, starting with the one above the fireplace in the dining room. Aim the light beam at the next one, by shooting it from the left or right side of each crystal.`, linkedItems: `Rz6X0`, }),
+ new MiscMarker(`1kPgF`, markers.ritualCollectible, DefaultPOIData.nullLoc, { uniqueTitle: `Ritual Item - The Dragon`, uniqueDesc: `Ankh Charm\nYou must ignite 3 wood bundles and kill a Doppelghast to drop this item. It has no fixed location.`, linkedItems: `bdRP2,ZT7wi,Jw3mF`, }),
+ new MiscMarker(`bdRP2`, markers.ritualStep, [272.91008968927326, 157.77883305787276], { uniqueTitle: `Ritual Item Step - The Dragon`, uniqueDesc: `Wood Bundle\nNeeds to be ignited using any source of fire e.g. molotov, fire sword, incendiary. Once all 3 are lit, a Doppelghast will spawn, kill it to obtain the Ankh Charm`, linkedItems: `KINbg`, }),
+ new MiscMarker(`ZT7wi`, markers.ritualStep, [286.7132597387412, 218.4766914905465], { uniqueTitle: `Ritual Item Step - The Dragon`, uniqueDesc: `Wood Bundle\nNeeds to be ignited using any source of fire e.g. molotov, fire sword, incendiary. Once all 3 are lit, a Doppelghast will spawn, kill it to obtain the Ankh Charm`, linkedItems: `KINbg`, }),
+ new MiscMarker(`Jw3mF`, markers.ritualStep, [274.7477963919653, 276.61682902048204], { uniqueTitle: `Ritual Item Step - The Dragon`, uniqueDesc: `Wood Bundle\nNeeds to be ignited using any source of fire e.g. molotov, fire sword, incendiary. Once all 3 are lit, a Doppelghast will spawn, kill it to obtain the Ankh Charm`, linkedItems: `KINbg`, }),
+ new MiscMarker(`RMXsK`, markers.ritualCollectible, [154.2681238388354, 234.19869373972807], { uniqueTitle: `Ritual Item - The Raven`, uniqueDesc: `Raven Talon\nObtained by taking the sewer exit from the castle and shooting the Raven in the tunnel. Once out of the pipe, shoot the raven in the sky for it to drop it's talon.`, linkedItems: `IZOQg,RXF7n`, }),
+ new MiscMarker(`SfjDB`, markers.ritualCollectible, [192.21186406484745, 165.52074780607552], { uniqueTitle: `Ritual Item Step - The Stag`, uniqueDesc: `Otto's Horseshoe\nShoot it from above the doorframe in the barn by deadshot.`, linkedItems: `Rlskg`, }),
+ new MiscMarker(`7ERDa`, markers.ritualCollectible, [192.21186406484745, 165.52074780607552], { uniqueTitle: `Ritual Item - The Stag`, uniqueDesc: `Pegasus's Horseshoe\nAfter obtaining Otto's Horseshoe, fire yourself from the cannon to spawn, then look in the air for a stormcloud. The horseshoe will appear beneath it.`, linkedItems: `8A54Q,3wP8a`, }),
+ new MiscMarker(`Rz6X0`, markers.ritualStep, [389.5287826348198, 242.4112235081103], { uniqueTitle: `Ritual - The Lion`, uniqueDesc: `Place the ritual item, get kills to charge it. When finished an incantation box will appear, use the upgraded sword of the correct type to open the box.`, linkedItems: `cC4KM`, }),
+ new MiscMarker(`KINbg`, markers.ritualStep, [232.89430147053977, 248.2862956684153], { uniqueTitle: `Ritual - The Dragon`, uniqueDesc: `Place the ritual item, get kills to charge it. When finished an incantation box will appear, use the upgraded sword of the correct type to open the box.`, linkedItems: `8QlMF`, }),
+ new MiscMarker(`RXF7n`, markers.ritualStep, [356.97616797402475, 309.9245921952382], { uniqueTitle: `Ritual - The Raven`, uniqueDesc: `Place the ritual item, get kills to charge it. When finished an incantation box will appear, use the upgraded sword of the correct type to open the box.`, linkedItems: `RMXsK`, }),
+ new MiscMarker(`3wP8a`, markers.ritualStep, [84.93142119636467, 189.07043611497446], { uniqueTitle: `Ritual - The Stag`, uniqueDesc: `Place the ritual item, get kills to charge it. When finished an incantation box will appear, use the upgraded sword of the correct type to open the box.`, linkedItems: `SfjDB`, }),
+ new MiscMarker(`UV7WP`, markers.pointOfPower, [323.55385236404203, 376.13837088011826], { linkedItems: `VunDA` }),
+ new MiscMarker(`RSzpo`, markers.pointOfPower, [354.7299089317141, 444.3757334270622], { linkedItems: `VunDA` }),
+ new MiscMarker(`QPh5Z`, markers.pointOfPower, [398.0672220860039, 170.86692346643366], { linkedItems: `VunDA` }),
+ new MiscMarker(`BwIRp`, markers.pointOfPower, [249.81997914264485, 219.42950745312723], { linkedItems: `VunDA` }),
+ new MiscMarker(`q48DR`, markers.pointOfPower, [192.49981801841787, 132.5426584987053], { linkedItems: `VunDA` }),
+ new MiscMarker(`BhTte`, markers.pointOfPower, [156.40214500790114, 294.00889124478766], { linkedItems: `VunDA` }),
+ new MiscMarker(`Ux1rW`, markers.clue, [311.3035046967362, 309.74503909124564], { linkedItems: `TB1Ey,lgO4Q,SLY7x,ELKta`, uniqueTitle: `Symbol Wall`, uniqueDesc: `When punched with Melee Macchiato it reveals a wall of symbols that must be shot in the corresponding order to symbols shown on the bottles in the pub that appear after talking to Kraft. After the sequence is complete, it reveals a book to the left that allows you to place the torn pages found in the common room.`, }),
+ new MiscMarker(`VunDA`, markers.secretArea, [418.33998040078745, 130.4440763960666], { linkedItems: `6UGOZ`, uniqueTitle: `Secret Study`, uniqueDesc: `The door is revealed after activating and completing all point of power traps, in the correct order as shown in the book next to the symbol wall.\nThe wall can only be opened after obtaining the Mystic Orb`, }),
+ new MiscMarker(`6UGOZ`, markers.questCollectible, [408.34375, 254.53125], { linkedItems: `rt2J9,i5G3V,Rx6v2,JKqce`, img: `BGY4B3N`, uniqueTitle: `Mystic Orb`, uniqueDesc: `Is required to open the Secret Study. To spawn it, in the order as noted on the Secret Study Door (Clockwise from the top), perform a weapon inspect with the matching sword in front of the matching statue, then activate the appropriate incantation on the same statue. When done correctly the statue will light up yellow. After the 4th statue is done the Orb will spawn.` },),
+ new MiscMarker(`rt2J9`, markers.mainQuest, [389.2594519845276, 253.40086432902942], { linkedItems: `6UGOZ`, uniqueTitle: `Orb Pedestal - The Lion`, uniqueDesc: `Requires the Orb to begin. Starts a timed event to complete, run to each large green orb as fast as possible to charge the orb, no killing is necessary, when completed correctly the orb will have a coloured effect flying around it. They can be completed in any order, must be picked up to begin another.` },),
+ new MiscMarker(`i5G3V`, markers.mainQuest, [255.1987428990766, 202.40572051308442], { linkedItems: `6UGOZ`, uniqueTitle: `Orb Pedestal - The Dragon`, uniqueDesc: `Requires the Orb to begin. Starts a timed event to complete, kill zombies with any fire damage including the alt fire of the Dragon sword to charge the orb, when completed correctly the orb will have a coloured effect flying around it. They can be completed in any order, must be picked up to begin another.` },),
+ new MiscMarker(`Rx6v2`, markers.mainQuest, [348.92905823801664, 306.6692377640179], { linkedItems: `6UGOZ`, uniqueTitle: `Orb Pedestal - The Raven`, uniqueDesc: `Requires the Orb to begin. Starts a timed event to complete, kill zombies with shadow rift effects, including Kazimir devices and the alt fire of the Raven sword to charge the orb, when completed correctly the orb will have a coloured effect flying around it. They can be completed in any order, must be picked up to begin another.` },),
+ new MiscMarker(`JKqce`, markers.mainQuest, [90.29487190696896, 187.47728224104117], { linkedItems: `6UGOZ`, uniqueTitle: `Orb Pedestal - The Stag`, uniqueDesc: `Requires the Orb to begin. Starts a timed event to complete, kill zombies with any electrical effect, including the alt fire of the Stag sword to charge the orb, when completed correctly the orb will have a coloured effect flying around it. They can be completed in any order, must be picked up to begin another.` },),
+ new MiscMarker(`mPlz7`, markers.questCollectible, [418.39903763765665, 122.84038315591837], { linkedItems: `fKytn`, img: `ZkW20YW`, uniqueTitle: `Guardian Key`, uniqueDesc: `Found after opening the Study door with the charged orb by performing all 4 orb rituals. This recording can be activated and collected in order to begin the bossfight, back at spawn.` },),
+ new MiscMarker(`fKytn`, markers.bossFight, [93.99040847306705, 220.07244946876693], { linkedItems: `mPlz7` },),
]
};
\ No newline at end of file
diff --git a/src/data/maps/blackOps6Maps.tsx b/src/data/maps/blackOps6Maps.tsx
new file mode 100644
index 00000000..34b94b2b
--- /dev/null
+++ b/src/data/maps/blackOps6Maps.tsx
@@ -0,0 +1,3661 @@
+import { SVGOverlay } from "react-leaflet";
+import { ImageBounds, globalStyle } from './sharedSVGProperties';
+
+
+export const blackOps6Maps = {
+ libertyFalls: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ terminus_biolab: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ terminus_prison: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ citadelle: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+};
diff --git a/src/data/maps/coldWarMaps.tsx b/src/data/maps/coldWarMaps.tsx
new file mode 100644
index 00000000..b5611eff
--- /dev/null
+++ b/src/data/maps/coldWarMaps.tsx
@@ -0,0 +1,2840 @@
+import { SVGOverlay } from "react-leaflet";
+import { ImageBounds, globalStyle } from './sharedSVGProperties';
+
+
+export const coldWarMaps = {
+ dieMaschine: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ dieMaschineUnderground: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ firebaseZ: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ firebaseZSpawn: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ mauerDerToten: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ mauerDerTotenStreets: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ forsaken: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ forsakenUnderground: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+};
diff --git a/src/data/maps/coldWarOutbreakMaps.tsx b/src/data/maps/coldWarOutbreakMaps.tsx
new file mode 100644
index 00000000..0a216b53
--- /dev/null
+++ b/src/data/maps/coldWarOutbreakMaps.tsx
@@ -0,0 +1,9879 @@
+import { SVGOverlay } from "react-leaflet";
+import { ImageBounds, globalStyle } from './sharedSVGProperties';
+
+
+export const coldWarOutbreakMaps = {
+ zoo: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ ruka: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ duga: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ alpine: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ golova: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ sanatorium: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ collateral: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+ armada: (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+};
diff --git a/src/data/maps/mapDetails.tsx b/src/data/maps/mapDetails.tsx
index 55fd4f92..ebb5b74c 100644
--- a/src/data/maps/mapDetails.tsx
+++ b/src/data/maps/mapDetails.tsx
@@ -1,6 +1,6 @@
import { MapItem } from '../../classes';
-import { MapIds } from '../intel';
-import { mapSVGs } from './mapSVGs';
+import { MapIds } from '../../components/MapControls/MapIds';
+import { allGameMapSVGs } from './mapSVGs';
export const GetMapById = (mapId: string) =>
Object.values(MapDetails).find(map => map.id === mapId);
@@ -14,61 +14,61 @@ export const MapDetails = {
title: 'All Outbreak Maps',
}),
//outbreak
- zoo: new MapItem(MapIds.zoo, { title: 'Zoo', mapOverlay: mapSVGs.zoo }),
- ruka: new MapItem(MapIds.ruka, { title: 'Ruka', mapOverlay: mapSVGs.ruka }),
- duga: new MapItem(MapIds.duga, { title: 'Duga', mapOverlay: mapSVGs.duga }),
+ zoo: new MapItem(MapIds.zoo, { title: 'Zoo', mapOverlay: allGameMapSVGs.zoo }),
+ ruka: new MapItem(MapIds.ruka, { title: 'Ruka', mapOverlay: allGameMapSVGs.ruka }),
+ duga: new MapItem(MapIds.duga, { title: 'Duga', mapOverlay: allGameMapSVGs.duga }),
alpine: new MapItem(MapIds.alpine, {
title: 'Alpine',
- mapOverlay: mapSVGs.alpine,
+ mapOverlay: allGameMapSVGs.alpine,
}),
golova: new MapItem(MapIds.golova, {
title: 'Golova',
- mapOverlay: mapSVGs.golova,
+ mapOverlay: allGameMapSVGs.golova,
}),
sanatorium: new MapItem(MapIds.sanatorium, {
title: 'Sanatorium',
- mapOverlay: mapSVGs.sanatorium,
+ mapOverlay: allGameMapSVGs.sanatorium,
}),
collateral: new MapItem(MapIds.collateral, {
title: 'Collateral',
- mapOverlay: mapSVGs.collateral,
+ mapOverlay: allGameMapSVGs.collateral,
}),
armada: new MapItem(MapIds.armada, {
title: 'Armada',
- mapOverlay: mapSVGs.armada,
+ mapOverlay: allGameMapSVGs.armada,
}),
//roundbased
dieMaschine: new MapItem(MapIds.dieMaschine, {
title: 'Die Maschine',
- mapOverlay: mapSVGs.dieMaschine,
+ mapOverlay: allGameMapSVGs.dieMaschine,
}),
dieMaschineUnderground: new MapItem(MapIds.dieMaschineUnderground, {
title: 'Die Maschine Underground',
- mapOverlay: mapSVGs.dieMaschine_underground,
+ mapOverlay: allGameMapSVGs.dieMaschineUnderground,
}),
firebaseZ: new MapItem(MapIds.firebaseZ, {
title: 'Firebase Z',
- mapOverlay: mapSVGs.firebaseZ,
+ mapOverlay: allGameMapSVGs.firebaseZ,
}),
firebaseZSpawn: new MapItem(MapIds.firebaseZSpawn, {
title: 'Firebase Z Spawn',
- mapOverlay: mapSVGs.firebaseZ_spawn,
+ mapOverlay: allGameMapSVGs.firebaseZSpawn,
}),
mauerDerToten: new MapItem(MapIds.mauerDerToten, {
title: 'Mauer Der Toten Underground',
- mapOverlay: mapSVGs.mauerDerToten,
+ mapOverlay: allGameMapSVGs.mauerDerToten,
}),
mauerDerTotenStreets: new MapItem(MapIds.mauerDerTotenStreets, {
title: 'Mauer Der Toten',
- mapOverlay: mapSVGs.mauerDerToten_streets,
+ mapOverlay: allGameMapSVGs.mauerDerTotenStreets,
}),
forsaken: new MapItem(MapIds.forsaken, {
title: 'Forsaken',
- mapOverlay: mapSVGs.forsaken,
+ mapOverlay: allGameMapSVGs.forsaken,
}),
forsakenUnderground: new MapItem(MapIds.forsakenUnderground, {
title: 'Forsaken Underground',
- mapOverlay: mapSVGs.forsaken_underground,
+ mapOverlay: allGameMapSVGs.forsakenUnderground,
}),
//onslaught
miami: new MapItem(MapIds.miami, { title: 'Miami' }),
@@ -95,19 +95,23 @@ export const MapDetails = {
//bo6
libertyFalls: new MapItem(MapIds.libertyFalls, {
title: 'Liberty Falls',
- mapOverlay: mapSVGs.liberty_falls,
+ mapOverlay: allGameMapSVGs.libertyFalls,
}),
terminusBiolabs: new MapItem(MapIds.terminusBiolabs, {
title: 'Terminus Biolabs & Islands',
- mapOverlay: mapSVGs.terminus_biolab,
+ mapOverlay: allGameMapSVGs.terminus_biolab,
}),
terminusPrison: new MapItem(MapIds.terminusPrison, {
title: 'Terminus Prison',
- mapOverlay: mapSVGs.terminus_prison,
+ mapOverlay: allGameMapSVGs.terminus_prison,
}),
terminusIslands: new MapItem(MapIds.terminusIslands, {
title: 'Terminus Islands',// TODO: add a way of showing the same marker over multiple map layers e.g. terminus and its islands vs the main island
}),
+ citadelle: new MapItem(MapIds.citadelle, {
+ title: 'Citadelle Des Morts',
+ mapOverlay: allGameMapSVGs.citadelle,
+ }),
};
export const allOutbreakMapsArr: string[] = [
@@ -118,5 +122,5 @@ export const allOutbreakMapsArr: string[] = [
MapIds.golova,
MapIds.sanatorium,
MapIds.collateral,
- MapIds.armada,
+ MapIds.armada
];
diff --git a/src/data/maps/mapSVGs.tsx b/src/data/maps/mapSVGs.tsx
index 4c047046..77b9062a 100644
--- a/src/data/maps/mapSVGs.tsx
+++ b/src/data/maps/mapSVGs.tsx
@@ -1,19554 +1,10 @@
-import { LatLngBoundsExpression } from 'leaflet';
-import { SVGOverlay } from 'react-leaflet';
+import { blackOps6Maps } from './blackOps6Maps';
+import { coldWarMaps } from './coldWarMaps';
+import { coldWarOutbreakMaps } from './coldWarOutbreakMaps';
-export const ImageBounds: LatLngBoundsExpression = [
- [0, 0],
- [512, 512],
-];
-
-const globalStyle = `
-.no-fill{fill:none;}
-.no-stroke{stroke:none;}
-
-.border-fill{fill:var(--svg-border);}
-.road-fill{fill:var(--svg-roads);}
-.background-fill{fill:var(--svg-background);}
-.field-fill{fill:var(--svg-field)}
-.feature-fill{fill:var(--svg-features);}
-.building-fill{fill:var(--svg-buildings);}
-
-.border-stroke{stroke:var(--svg-border);}
-.road-stroke{stroke:var(--svg-roads);}
-.background-stroke{stroke:var(--svg-background);}
-.field-stroke{stroke:var(--svg-field)}
-.feature-stroke{stroke:var(--svg-features);}
-.building-stroke{stroke:var(--svg-buildings);}
-`;
-
-export const mapSVGs = {
- zoo: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- ruka: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- duga: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- alpine: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- golova: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- sanatorium: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- collateral: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- armada: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- dieMaschine: (
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- dieMaschine_underground: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- firebaseZ: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- firebaseZ_spawn: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- mauerDerToten: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- mauerDerToten_streets: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- forsaken: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- forsaken_underground: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
+export const allGameMapSVGs = {
+ ...coldWarOutbreakMaps,
+ ...coldWarMaps,
//#TODO: set up styling to use global colors instead of local colors.
- liberty_falls: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- terminus_biolab: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- terminus_prison: (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ),
+ ...blackOps6Maps
};
diff --git a/src/data/maps/sharedSVGProperties.tsx b/src/data/maps/sharedSVGProperties.tsx
new file mode 100644
index 00000000..c3db09c9
--- /dev/null
+++ b/src/data/maps/sharedSVGProperties.tsx
@@ -0,0 +1,26 @@
+import { LatLngBoundsExpression } from "leaflet";
+
+
+export const ImageBounds: LatLngBoundsExpression = [
+ [0, 0],
+ [512, 512],
+];
+
+export const globalStyle = `
+.no-fill{fill:none;}
+.no-stroke{stroke:none;}
+
+.border-fill{fill:var(--svg-border);}
+.road-fill{fill:var(--svg-roads);}
+.background-fill{fill:var(--svg-background);}
+.field-fill{fill:var(--svg-field)}
+.feature-fill{fill:var(--svg-features);}
+.building-fill{fill:var(--svg-buildings);}
+
+.border-stroke{stroke:var(--svg-border);}
+.road-stroke{stroke:var(--svg-roads);}
+.background-stroke{stroke:var(--svg-background);}
+.field-stroke{stroke:var(--svg-field)}
+.feature-stroke{stroke:var(--svg-features);}
+.building-stroke{stroke:var(--svg-buildings);}
+`;
diff --git a/src/data/migration.ts b/src/data/migration.ts
index b1f9ed22..e1226a4c 100644
--- a/src/data/migration.ts
+++ b/src/data/migration.ts
@@ -4,7 +4,6 @@ import { addCollectedIntel, addCompletedChallenges, addPinnedChallenges, getSetU
class OldDeclassifiedUserPreferences {
hasBeenMigrated: boolean | null;
- lastSelectedMap: string | null;
collectedIntel: string[] | null;
asideShow: boolean | null;
hideIntel: boolean | null;
@@ -15,9 +14,8 @@ class OldDeclassifiedUserPreferences {
challengeTrackerState: string | null;
darkmode: boolean | null;
useSystemTheme: boolean | null;
- constructor({ lastSelectedMap, collectedIntel, asideShow, hideIntel, hideMisc, hideBugRepButton, pinnedChallenges, completedChallenges, challengeTrackerState, darkmode, useSystemTheme, hasBeenMigrated }) {
+ constructor({ collectedIntel, asideShow, hideIntel, hideMisc, hideBugRepButton, pinnedChallenges, completedChallenges, challengeTrackerState, darkmode, useSystemTheme, hasBeenMigrated }) {
// Interactive Map
- this.lastSelectedMap = lastSelectedMap;
this.collectedIntel = collectedIntel;
this.asideShow = asideShow;
this.hideIntel = hideIntel;
@@ -64,7 +62,6 @@ export const migrateOldUserPreferences = async () => {
return false;
}
- updatedUserPreferences.currentMap = parsedOldPrefs.lastSelectedMap ?? updatedUserPreferences.currentMap;
updatedUserPreferences.challengeTrackerState = parsedOldPrefs.challengeTrackerState ?? updatedUserPreferences.challengeTrackerState;
updatedUserPreferences.darkMode = parsedOldPrefs.darkmode ?? updatedUserPreferences.darkMode;
updatedUserPreferences.hideBugRepButton = parsedOldPrefs.hideBugRepButton ?? updatedUserPreferences.hideBugRepButton;
diff --git a/src/data/misc.tsx b/src/data/misc.tsx
index b35769e5..978529c9 100644
--- a/src/data/misc.tsx
+++ b/src/data/misc.tsx
@@ -1,9 +1,11 @@
import { MiscMarker } from "../classes";
+import { DoorStore } from "./doors";
import { StaticEggStore } from "./easterEggs";
import { MapIds } from "./intel";
import { StaticQuestStore } from "./mainQuest";
import { PerkStore } from "./perks";
import { MarkerStore, MiscTypes } from "./types";
+import { WallbuyStore } from "./wallbuys";
// Used to generate IDs for all of the below misc markers:
// https://nanoid.jormaechea.com.ar/?alphabet=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz&length=5
@@ -18,12 +20,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`2y3Cc`, MiscTypes.exfillRadio, [242.55058174922743, 337.5]),
new MiscMarker(`nZA19`, MiscTypes.requiemRadio, [189.18283195992137, 256.25]),
new MiscMarker(`6gdU5`, MiscTypes.maxisRadio, [257.99097293754096, 88.5625]),
- new MiscMarker(`68O2O`, MiscTypes.wallbuy, [261.1077465118457, 355], { uniqueTitle: `1911` }),
- new MiscMarker(`lmW4Q`, MiscTypes.wallbuy, [276.7037503511565, 255.75], { uniqueTitle: `MP5` }),
- new MiscMarker(`qnd1q`, MiscTypes.wallbuy, [340.9758521397134, 318.75], { uniqueTitle: `Gallo` }),
- new MiscMarker(`sLfEw`, MiscTypes.wallbuy, [220.98347152062405, 256.6785228855506], { uniqueTitle: `Hauer 77` }),
- new MiscMarker(`V1v4Z`, MiscTypes.wallbuy, [179.74021678059745, 256], { uniqueTitle: `Diamatti` }),
- new MiscMarker(`znu5z`, MiscTypes.wallbuy, [211.11624215750538, 158.125], { uniqueTitle: `M16` }),
new MiscMarker(`r1v1U`, MiscTypes.mysteryBox, [206.4640696694447, 344]),
new MiscMarker(`hZ0vk`, MiscTypes.mysteryBox, [386.16701001966476, 287.25]),
new MiscMarker(`whnl0`, MiscTypes.mysteryBox, [227.36045978087836, 178.5]),
@@ -40,18 +36,12 @@ export const MiscStore: MarkerStore = {
[MapIds.dieMaschineUnderground]: [
new MiscMarker(`azfbH`, MiscTypes.workbench, [181.80822246607428, 350.9882946484989]),
new MiscMarker(`cTakX`, MiscTypes.craftingTable, [302.9450323063958, 199.5]),
- new MiscMarker(`GdJqJ`, MiscTypes.wallbuy, [325.4370259387583, 188.25], { uniqueTitle: `XM4` }),
- new MiscMarker(`OwuYN`, MiscTypes.wallbuy, [189.74051249234878, 245], { uniqueTitle: `RPD` }),
- new MiscMarker(`CRQrY`, MiscTypes.wallbuy, [99.48320905903957, 413], { uniqueTitle: `LW3 - Tundra` }),
- new MiscMarker(`6wZVg`, MiscTypes.wallbuy, [185.47998163708195, 359.25], { uniqueTitle: `Krig 6` }),
new MiscMarker(`VC2JI`, MiscTypes.ammoCrate, [190.9774312317994, 386.25]),
new MiscMarker(`IWFVK`, MiscTypes.papMachine, [175.2347346651086, 358.5]),
new MiscMarker(`tKfcy`, MiscTypes.trialComputer, [228.18152393671284, 304]),
new MiscMarker(`bbpOB`, MiscTypes.arsenal, [246.2018112514607, 373.25]),
new MiscMarker(`DW0WK`, MiscTypes.mysteryBox, [335.16054105688795, 380.5]),
- new MiscMarker(`FUa64`, MiscTypes.wallbuy, [334.4108888394265, 318.5], { uniqueTitle: `Type 63` }),
new MiscMarker(`VJSPN`, MiscTypes.ammoCrate, [237.45586871441026, 319.75]),
- new MiscMarker(`TUgDl`, MiscTypes.wallbuy, [210.9681570307718, 296], { uniqueTitle: `AK-74u` }),
new MiscMarker(`q44EK`, MiscTypes.mysteryBox, [182.9811409122104, 203.75]),
new MiscMarker(`LXxTQ`, MiscTypes.power, [126.11151299315564, 399.125]),
new MiscMarker(`ovCt3`, MiscTypes.aetherTunnel, [209.95886673591343, 173]),
@@ -79,19 +69,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`RODrY`, MiscTypes.arsenal, [416.9586829291132, 251.5]),
new MiscMarker(`CxbPm`, MiscTypes.arsenal, [321.43569154415206, 338.75]),
new MiscMarker(`jHHcR`, MiscTypes.arsenal, [159.10707931454255, 266.5]),
- new MiscMarker(`77gVD`, MiscTypes.wallbuy, [353.48127867777885, 317.5], { uniqueTitle: `M16` }),
- new MiscMarker(`z46lQ`, MiscTypes.wallbuy, [331.09573696038956, 278.375], { uniqueTitle: `Ak-74u` }),
- new MiscMarker(`8ZbjF`, MiscTypes.wallbuy, [432.8419561756719, 283.75], { uniqueTitle: `1911` }),
- new MiscMarker(`STzNi`, MiscTypes.wallbuy, [239.21495926584885, 261.75], { uniqueTitle: `AUG` }),
- new MiscMarker(`TChc2`, MiscTypes.wallbuy, [278.60534460155446, 153.125], { uniqueTitle: `DMR 14` }),
- new MiscMarker(`Oc61M`, MiscTypes.wallbuy, [268.34635967787244, 216.5], { uniqueTitle: `QBZ-83` }),
- new MiscMarker(`T2xi0`, MiscTypes.wallbuy, [359.83813091113404, 212], { uniqueTitle: `Hauer 77` }),
- new MiscMarker(`OSfjR`, MiscTypes.wallbuy, [430.4222586384493, 350.75], { uniqueTitle: `FFAR 1` }),
- new MiscMarker(`n4iky`, MiscTypes.wallbuy, [382.9138074726098, 385.5], { uniqueTitle: `M82` }),
- new MiscMarker(`TBoB4`, MiscTypes.wallbuy, [284.8504518213316, 361.875], { uniqueTitle: `Type 63` }),
- new MiscMarker(`3exzd`, MiscTypes.wallbuy, [191.4971626556794, 350], { uniqueTitle: `AK-47` }),
- new MiscMarker(`IC4tW`, MiscTypes.wallbuy, [215.2387114898399, 331.5], { uniqueTitle: `KSP` }),
- new MiscMarker(`pYZAK`, MiscTypes.wallbuy, [148.46469238692762, 343.75], { uniqueTitle: `RPD` }),
new MiscMarker(`rQkF_`, MiscTypes.craftingTable, [309.8493398258264, 286.875]),
new MiscMarker(`8OaeH`, MiscTypes.craftingTable, [294.8495622249274, 153.625]),
new MiscMarker(`hFCmp`, MiscTypes.craftingTable, [175.95490682648187, 307.5]),
@@ -131,14 +108,10 @@ export const MiscStore: MarkerStore = {
[MapIds.firebaseZSpawn]: [
new MiscMarker(`uxA5R`, MiscTypes.ammoCrate, [208.93098604738273, 232.5]),
new MiscMarker(`rVCnt`, MiscTypes.craftingTable, [311.9078565408746, 242]),
- new MiscMarker(`UyWMz`, MiscTypes.wallbuy, [325.9028748010113, 223.5], { uniqueTitle: `Magnum` }),
- new MiscMarker(`8Tm13`, MiscTypes.wallbuy, [315.20624122108813, 328], { uniqueTitle: `Bullfrog` }),
new MiscMarker(`3qsWY`, MiscTypes.papMachine, [380.469758404345, 257.875]),
new MiscMarker(`oQwxc`, MiscTypes.omegaRadio, [300.9558734823382, 330.3515634503805], { uniqueDesc: `On top of a table, outside the bedroom. You will have to turn on the power first.` }),
new MiscMarker(`d1zVX`, MiscTypes.arsenal, [364.850318381871, 169.25]),
new MiscMarker(`PN5cS`, MiscTypes.rampageInducer, [256.4956901395262, 188.375]),
- new MiscMarker(`zQK69`, MiscTypes.wallbuy, [115.12184661485156, 215.125], { uniqueTitle: `Gallo` }),
- new MiscMarker(`il15s`, MiscTypes.wallbuy, [314.4659378218934, 149.25], { uniqueTitle: `Stoner-63` }),
new MiscMarker(`ZQwBM`, MiscTypes.teleporter, [220.20935480850267, 349.25], { uniqueDesc: `To Main Base` }),
],
[MapIds.mauerDerToten]: [
@@ -154,12 +127,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`i1xqT`, MiscTypes.mysteryBox, [174.0092857867172, 308.57965377836797]),
new MiscMarker(`eBa14`, MiscTypes.mysteryBox, [181.34231370375477, 174.55292756267218]),
new MiscMarker(`htMzr`, MiscTypes.zipline, [146.61019806933353, 174.85745117171348]),
- new MiscMarker(`qUsdq`, MiscTypes.wallbuy, [333.1876563339571, 200.75], { uniqueTitle: `Krig 6` }),
- new MiscMarker(`_MhF2`, MiscTypes.wallbuy, [287.957458635193, 312], { uniqueTitle: `M16` }),
- new MiscMarker(`9iDLM`, MiscTypes.wallbuy, [264.4634433306776, 206.21861097788877], { uniqueTitle: `Milano 821` }),
- new MiscMarker(`6n4vD`, MiscTypes.wallbuy, [159.12485177224806, 196.85347379562404], { uniqueTitle: `XM4` }),
- new MiscMarker(`v08K4`, MiscTypes.wallbuy, [150.48213221909987, 80.55439072511358], { uniqueTitle: `DMR 14` }),
- new MiscMarker(`xRomg`, MiscTypes.wallbuy, [157.85840261969585, 417.3706776955915], { uniqueTitle: `RPD` }),
new MiscMarker(`ROB5S`, MiscTypes.power, [283.45675455337124, 206.46866472621429], { uniqueDesc: `2 fuses are required to activate.` }),
],
[MapIds.mauerDerTotenStreets]: [
@@ -203,15 +170,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`jiSKu`, MiscTypes.klausRadio, [248.69686909470747, 86.08737776355258]),
new MiscMarker(`ju6UD`, MiscTypes.klausRadio, [390.1321584270637, 329.59800864437324]),
new MiscMarker(`UM_zY`, MiscTypes.klausRadio, [181.4866273933248, 286.50529186955015]),
- new MiscMarker(`hELxf`, MiscTypes.wallbuy, [286.69157898902415, 102.51138061773712], { uniqueTitle: `Stoner-63` }),
- new MiscMarker(`Bv7or`, MiscTypes.wallbuy, [199.4014593131159, 175.9347523985546], { uniqueTitle: `QBZ-83` }),
- new MiscMarker(`0NXak`, MiscTypes.wallbuy, [399.8494608215523, 326], { uniqueTitle: `Type 63` }),
- new MiscMarker(`8kTWI`, MiscTypes.wallbuy, [286.72101221026105, 380.25], { uniqueTitle: `AK-74u` }),
- new MiscMarker(`X4lhW`, MiscTypes.wallbuy, [140.47611680346853, 340], { uniqueTitle: `MP5` }),
- new MiscMarker(`jQOwR`, MiscTypes.wallbuy, [186.48321783920994, 404.375], { uniqueTitle: `Gallo SA12` }),
- new MiscMarker(`ZEXRC`, MiscTypes.wallbuy, [340.85034092382944, 413.75], { uniqueTitle: `Diamatti` }),
- new MiscMarker(`vdYgv`, MiscTypes.wallbuy, [323.38931113034687, 313.6534246276432], { uniqueTitle: `Hauer 77` }),
- new MiscMarker(`ZUMvb`, MiscTypes.wallbuy, [307.8645191395491, 294.70791575751707], { uniqueTitle: `KSP 45` }),
new MiscMarker(`7EMcB`, MiscTypes.papMachine, [251.9594828704304, 196.73887409661467]),
new MiscMarker(`slGlH`, MiscTypes.trialComputer, [252.96874015675087, 39.595653414259026]),
new MiscMarker(`UvjK8`, MiscTypes.rampageInducer, [337.9763530414482, 384.75]),
@@ -233,27 +191,13 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`Mmsy_`, MiscTypes.craftingTable, [260.625, 436.3125]),
new MiscMarker(`aY4N9`, MiscTypes.teleporter, [223.20793145425603, 129], { uniqueDesc: `To Tower` }),
new MiscMarker(`4EXal`, MiscTypes.teleporter, [383.941029122577, 41.75], { uniqueDesc: `To Staging Area` }),
- new MiscMarker(`LinzC`, MiscTypes.wallbuy, [252.94734525704655, 91.75], { uniqueTitle: `1911` }),
new MiscMarker(`6uLKO`, MiscTypes.arsenal, [257.69565502387866, 115.5]),
new MiscMarker(`_S8eS`, MiscTypes.arsenal, [275.375, 436.375]),
new MiscMarker(`KTf9e`, MiscTypes.rampageInducer, [269.94129600149824, 123.5]),
- new MiscMarker(`DkPDk`, MiscTypes.wallbuy, [285.1908512032962, 57.25], { uniqueTitle: `Diamatti` }),
- new MiscMarker(`hPvQY`, MiscTypes.wallbuy, [381.70090364266315, 78.25], { uniqueTitle: `Hauer 77` }),
- new MiscMarker(`ftW_1`, MiscTypes.wallbuy, [236.37046539938197, 307.5], { uniqueTitle: `Pellington` }),
- new MiscMarker(`xbmnw`, MiscTypes.wallbuy, [320.9730698099073, 182.9375], { uniqueTitle: `DMR 14` }),
- new MiscMarker(`5Bzt4`, MiscTypes.wallbuy, [365.2261190186347, 203.5], { uniqueTitle: `Bullfrog` }),
- new MiscMarker(`e6LK0`, MiscTypes.wallbuy, [447.66361667759156, 220.9375], { uniqueTitle: `Gallo` }),
- new MiscMarker(`5dWjB`, MiscTypes.wallbuy, [159.05660876486562, 183.9375], { uniqueTitle: `QBZ-83` }),
- new MiscMarker(`mOTWb`, MiscTypes.wallbuy, [154.86786332989982, 158.9375], { uniqueTitle: `Milano 821` }),
- new MiscMarker(`nNJxZ`, MiscTypes.wallbuy, [198.60605627867778, 273.5], { uniqueTitle: `Type 63s` }),
new MiscMarker(`3IYFT`, MiscTypes.mysteryBox, [153.46077816274934, 122.5]),
new MiscMarker(`dgz_n`, MiscTypes.mysteryBox, [321.7450674220433, 228.625]),
new MiscMarker(`kzgZZ`, MiscTypes.mysteryBox, [426.58274885288887, 206.25]),
new MiscMarker(`eqygP`, MiscTypes.trap, [136.1078799513063, 108.25], { uniqueTitle: `Suspended Hind` }),
- new MiscMarker(`PO_Zs`, MiscTypes.wallbuy, [81.87718419327653, 85], { uniqueTitle: `MP5` }),
- new MiscMarker(`PE7Yv`, MiscTypes.wallbuy, [124.48701657458564, 175], { uniqueTitle: `AUG` }),
- new MiscMarker(`Cjvh8`, MiscTypes.wallbuy, [85.69720451791603, 91.59201547112765], { uniqueTitle: `XM4` }),
- new MiscMarker(`IHqvu`, MiscTypes.wallbuy, [157.2287878078472, 232], { uniqueTitle: `FFAR 1` }),
new MiscMarker(`xSDbU`, MiscTypes.teleporter, [62.24088631894372, 92.75], { uniqueDesc: `To Main Street` }),
new MiscMarker(`sRlGi`, MiscTypes.teleporter, [283.4247143927334, 296.1875], { uniqueDesc: `To Staging Area` }),
new MiscMarker(`Q_P5D`, MiscTypes.teleporter, [275.1142159846428, 336.9375], { uniqueDesc: `To Bunker` }),
@@ -261,7 +205,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`hf9Pd`, MiscTypes.teleporter, [249.9121172394419, 264.25], { uniqueDesc: `To Bunker - Needs to be repaired` }),
new MiscMarker(`9OeeA`, MiscTypes.craftingTable, [93.22985532353218, 171.75]),
new MiscMarker(`1BYWt`, MiscTypes.trap, [108.349473265287, 161.5], { uniqueTitle: `Suspended Hind` }),
- new MiscMarker(`6YJ_i`, MiscTypes.wallbuy, [110.609525704654, 202.25], { uniqueTitle: `M82` }),
new MiscMarker(`kIs6t`, MiscTypes.zipline, [116.23252411274464, 259.25]),
new MiscMarker(`kJsx4`, MiscTypes.zipline, [384.73239067328404, 125]),
new MiscMarker(`aJTrM`, MiscTypes.zipline, [244.25, 282.75], { uniqueDesc: `To Anytown` }),
@@ -271,12 +214,10 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`wLU_k`, MiscTypes.trap, [130.8523199737803, 216], { uniqueTitle: `Suspended Hind` }),
new MiscMarker(`xFBpY`, MiscTypes.arsenal, [112.1089919468115, 238.375]),
new MiscMarker(`jTLky`, MiscTypes.arsenal, [400.7215375971533, 247.25]),
- new MiscMarker(`Dzmo9`, MiscTypes.wallbuy, [118.23181243562132, 215.375], { uniqueTitle: `RPD` }),
new MiscMarker(`n474k`, MiscTypes.trap, [151.59858366888284, 273.875], { uniqueTitle: `Suspended Hind` }),
new MiscMarker(`lbIYT`, MiscTypes.mysteryBox, [118.62162421575054, 211.75]),
new MiscMarker(`nzKwk`, MiscTypes.mysteryBox, [237.86299513063022, 324]),
new MiscMarker(`xcJJq`, MiscTypes.mysteryBox, [263.70345178866245, 38.39665499450159]),
- new MiscMarker(`0U1dM`, MiscTypes.wallbuy, [163.22869884820676, 344.625], { uniqueTitle: `FFAR1` }),
new MiscMarker(`i4Hh4`, MiscTypes.trialComputer, [264.67736094203576, 289.5625]),
new MiscMarker(`seF1D`, MiscTypes.papMachine, [274.98619135686863, 306.875]),
new MiscMarker(`GBsU3`, MiscTypes.papMachine, [264.8125, 453.25]),
@@ -293,9 +234,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`BwlgF`, MiscTypes.teleporter, [296.91141492649126, 38], { uniqueDesc: `To Tower` }),
new MiscMarker(`f7d0q`, MiscTypes.teleporter, [54.983195992134114, 448.5]),
new MiscMarker(`jys26`, MiscTypes.mysteryBox, [297.9818124356213, 396.125]),
- new MiscMarker(`EWbhd`, MiscTypes.wallbuy, [345.4748735836689, 228.375], { uniqueTitle: `Krig` }),
- new MiscMarker(`wTePJ`, MiscTypes.wallbuy, [222.46318007304055, 263.75], { uniqueTitle: `M60` }),
- new MiscMarker(`OFSTG`, MiscTypes.wallbuy, [150.21780597434218, 470.75], { uniqueTitle: `AK-74u` }),
],
/////////////////////Outbreak Misc Items/////////////////////////
@@ -306,16 +244,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`NFKKy`, MiscTypes.rift, [288.9652154637347, 43.5]),
new MiscMarker(`9gKgQ`, MiscTypes.fishing, [248.9694715375066, 345.5]),
new MiscMarker(`dz6u_`, MiscTypes.fishing, [172.47761127859548, 332.5]),
- new MiscMarker(`XHBng`, MiscTypes.wallbuy, [169.788791011143, 373.51495741647]),
- new MiscMarker(`C48eX`, MiscTypes.wallbuy, [199.8618860850235, 339.953248441663]),
- new MiscMarker(`hUgNo`, MiscTypes.wallbuy, [226.05336642166992, 284.46966314770833]),
- new MiscMarker(`5mHNU`, MiscTypes.wallbuy, [271.9013083975607, 327.48529982779115]),
- new MiscMarker(`uLBiL`, MiscTypes.wallbuy, [378.694470373232, 279.2212709056113]),
- new MiscMarker(`IseUH`, MiscTypes.wallbuy, [377.02986155344405, 406.01380851879895]),
- new MiscMarker(`s6Ggz`, MiscTypes.wallbuy, [258.7671967862002, 112.99627959809773]),
- new MiscMarker(`GRImF`, MiscTypes.wallbuy, [117.70440343659759, 383.7635095097696]),
- new MiscMarker(`C8ExY`, MiscTypes.wallbuy, [150.5199691988099, 271.05612018196865]),
- new MiscMarker(`xn8bs`, MiscTypes.wallbuy, [189.5625, 209.9375]),
new MiscMarker(`Pf372`, MiscTypes.ammoCrate, [196.78455986019551, 388.89032598944937]),
new MiscMarker(`ykBfS`, MiscTypes.ammoCrate, [176.96849229385415, 366.4596383969935]),
new MiscMarker(`tsnBG`, MiscTypes.ammoCrate, [192.0715706327847, 337.1326169848179]),
@@ -369,12 +297,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`6sxKz`, MiscTypes.ammoCrate, [290.2862557988399, 280.76045465863615]),
new MiscMarker(`BXt8R`, MiscTypes.ammoCrate, [154.37664743655102, 207.31244648201488]),
new MiscMarker(`mGa6x`, MiscTypes.ammoCrate, [295.8560155969824, 211.28179076416518]),
- new MiscMarker(`pWj7D`, MiscTypes.wallbuy, [240.40983939603782, 309.6215067926123]),
- new MiscMarker(`_et7e`, MiscTypes.wallbuy, [179.7866999930869, 311.14179392441775]),
- new MiscMarker(`QJLeT`, MiscTypes.wallbuy, [162.5180873040452, 353.77125671112447]),
- new MiscMarker(`Aa7h5`, MiscTypes.wallbuy, [218.9804723907548, 387.53389130258694]),
- new MiscMarker(`Z2G7z`, MiscTypes.wallbuy, [295.8011933010631, 273.74144329217023]),
- new MiscMarker(`jyPt2`, MiscTypes.wallbuy, [329.9425791075898, 236.51538664159438]),
new MiscMarker(`JFoDx`, MiscTypes.requiemRadio, [218.18265982443694, 262.5]),
new MiscMarker(`SpPAk`, MiscTypes.omegaRadio, [292.4610125908848, 261.5]),
new MiscMarker(`JG472`, MiscTypes.maxisRadio, [170.99728786132295, 358.5]),
@@ -401,12 +323,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`80XwF`, MiscTypes.ammoCrate, [233.14760778468533, 335.4940487545893]),
new MiscMarker(`IhpXC`, MiscTypes.ammoCrate, [395.7668393679832, 260.3598201125223]),
new MiscMarker(`sIyJB`, MiscTypes.ammoCrate, [268.7045125258021, 128.23023540175157]),
- new MiscMarker(`IDIaG`, MiscTypes.wallbuy, [257.623049666483, 419.4945666147199]),
- new MiscMarker(`ViQKB`, MiscTypes.wallbuy, [330.8199221096839, 219.85452285253052]),
- new MiscMarker(`bg0KW`, MiscTypes.wallbuy, [149.24142150677562, 197.01558759817974]),
- new MiscMarker(`ddBw7`, MiscTypes.wallbuy, [267.5912024956175, 231.7284640168234]),
- new MiscMarker(`G3Lx1`, MiscTypes.wallbuy, [290.428408237228, 265.0335171292474]),
- new MiscMarker(`aM_1i`, MiscTypes.wallbuy, [278.76550804955167, 148.92171676191577]),
new MiscMarker(`lWHWs`, MiscTypes.mysteryBox, [235.4553675253349, 249.47430038351064]),
new MiscMarker(`yzLM0`, MiscTypes.mysteryBox, [207.93825237571295, 94.9904070205805]),
new MiscMarker(`ed0yh`, MiscTypes.mysteryBox, [355.2101735577195, 227.85936691186168]),
@@ -463,13 +379,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`yM1S2`, MiscTypes.jumpPad, [278.45410886328614, 59.38781135361046]),
new MiscMarker(`y7K2E`, MiscTypes.jumpPad, [111.80976958193502, 304.4770170013288]),
new MiscMarker(`IRcNb`, MiscTypes.jumpPad, [377.01932066722077, 127.84632462506406]),
- new MiscMarker(`eAUAb`, MiscTypes.wallbuy, [237.5596066858896, 394.0444742792774]),
- new MiscMarker(`OUQrp`, MiscTypes.wallbuy, [216.02706746094876, 85.24573718234292]),
- new MiscMarker(`X6Bf3`, MiscTypes.wallbuy, [164.33578728860493, 343.10287670138746]),
- new MiscMarker(`31UO9`, MiscTypes.wallbuy, [317.30615777129947, 67.41337618919444]),
- new MiscMarker(`GpZS_`, MiscTypes.wallbuy, [139.88254903819504, 197.95937117870153]),
- new MiscMarker(`K7ay6`, MiscTypes.wallbuy, [378.35148690180966, 214.6089341851221]),
- new MiscMarker(`UzNkV`, MiscTypes.wallbuy, [216.07746476812133, 139.11181913168872]),
],
[MapIds.golova]: [
new MiscMarker(`jMyYI`, MiscTypes.rift, [165.47840929242773, 129]),
@@ -485,16 +394,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`eZtvN`, MiscTypes.jumpPad, [277.9466975034903, 127.12073089134977]),
new MiscMarker(`CGnf3`, MiscTypes.jumpPad, [65.96100379722746, 293.4287813490203]),
new MiscMarker(`ms1jS`, MiscTypes.jumpPad, [299.0269733372165, 235.22320946725563]),
- new MiscMarker(`wmuWG`, MiscTypes.wallbuy, [391.01912850701865, 349.97680753791883]),
- new MiscMarker(`PHx0y`, MiscTypes.wallbuy, [259.9441282565234, 324.96215738223185]),
- new MiscMarker(`NUegF`, MiscTypes.wallbuy, [255.30544263370194, 278.5150283276749]),
- new MiscMarker(`WgZlk`, MiscTypes.wallbuy, [247.78045977198417, 260.83585172484396]),
- new MiscMarker(`EDdVd`, MiscTypes.wallbuy, [189.4695980177873, 406.4654447254141]),
- new MiscMarker(`Cj7z7`, MiscTypes.wallbuy, [102.99143995016017, 332.67423226159815]),
- new MiscMarker(`Sv2Mr`, MiscTypes.wallbuy, [133.40913902258612, 294.7666483087646]),
- new MiscMarker(`lf_Z1`, MiscTypes.wallbuy, [213.79236709189115, 283.7899469967797]),
- new MiscMarker(`wY8A6`, MiscTypes.wallbuy, [175.03616784419052, 335.71818781886225]),
- new MiscMarker(`ZPs7o`, MiscTypes.wallbuy, [285.4329306073199, 141.63750920858075], { uniqueTitle: `DMR 14` }),
new MiscMarker(`LO4ZZ`, MiscTypes.ammoCrate, [349.449295335965, 219.4854934108629]),
new MiscMarker(`0COcP`, MiscTypes.ammoCrate, [391.0260080998486, 284.14556588589]),
new MiscMarker(`9VzV4`, MiscTypes.ammoCrate, [390.81226196987603, 355.6863239630557]),
@@ -524,17 +423,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`ksOb3`, MiscTypes.maxisRadio, [270.97016314949457, 359]),
],
[MapIds.sanatorium]: [
- new MiscMarker(`Fgozl`, MiscTypes.wallbuy, [369.03998522090853, 182.79574040351952]),
- new MiscMarker(`KKSy2`, MiscTypes.wallbuy, [240.2366599253267, 64.20726302897477]),
- new MiscMarker(`RGkIq`, MiscTypes.wallbuy, [156.49071639701307, 125.97763641344636]),
- new MiscMarker(`wvhSe`, MiscTypes.wallbuy, [151.36399346608587, 385.4893157572437]),
- new MiscMarker(`wYhoP`, MiscTypes.wallbuy, [221.0869496733043, 267.7446709720566]),
- new MiscMarker(`MWdg9`, MiscTypes.wallbuy, [257.38248348472337, 352.125]),
- new MiscMarker(`Li3bP`, MiscTypes.wallbuy, [280.5175197881211, 200.75]),
- new MiscMarker(`a_JVl`, MiscTypes.wallbuy, [260.2622177801051, 212]),
- new MiscMarker(`FLBef`, MiscTypes.wallbuy, [279.026156408071, 251]),
- new MiscMarker(`O6WkK`, MiscTypes.wallbuy, [309.86762509032627, 210.59375]),
- new MiscMarker(`Gf_oJ`, MiscTypes.wallbuy, [283.2996720837837, 136.5767028690432]),
new MiscMarker(`e1R7L`, MiscTypes.ammoCrate, [311.8518370977006, 151.75]),
new MiscMarker(`X0w4K`, MiscTypes.ammoCrate, [322.73809256359897, 212.4375]),
new MiscMarker(`ut4gA`, MiscTypes.ammoCrate, [303.614812816142, 223.5625]),
@@ -584,8 +472,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`aCqDF`, MiscTypes.mysteryBox, [278.56354383919887, 398.8710380995699]),
new MiscMarker(`lt6ZB`, MiscTypes.mysteryBox, [171.09686412283247, 178.85510249601353]),
new MiscMarker(`2cDDN`, MiscTypes.mysteryBox, [337.46799316757017, 172.47532688497765]),
- new MiscMarker(`K1b_U`, MiscTypes.wallbuy, [274.1902735759488, 271.97980445743264]),
- new MiscMarker(`1NE2i`, MiscTypes.wallbuy, [329.35910463308284, 392.12343294135957]),
new MiscMarker(`WfKIX`, MiscTypes.ammoCrate, [270.11233204955715, 273.39039433171195]),
new MiscMarker(`Et8uN`, MiscTypes.ammoCrate, [342.8775753456348, 401.3405720635541]),
new MiscMarker(`0P_Uk`, MiscTypes.ammoCrate, [366.0879054071596, 315.2256099277464]),
@@ -618,10 +504,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`IBgQv`, MiscTypes.ammoCrate, [193.4875604491301, 85.875]),
new MiscMarker(`iuxkU`, MiscTypes.ammoCrate, [323.1715400400215, 338.3125]),
new MiscMarker(`EkOhG`, MiscTypes.ammoCrate, [311.71891617720627, 407.125]),
- new MiscMarker(`7dw4P`, MiscTypes.wallbuy, [273.61241453743673, 248.625]),
- new MiscMarker(`MplYv`, MiscTypes.wallbuy, [237.96560363435918, 272.5625]),
- new MiscMarker(`i2E9R`, MiscTypes.wallbuy, [175.35905393637324, 164]),
- new MiscMarker(`K7xgo`, MiscTypes.wallbuy, [318.5914958959441, 382.375]),
new MiscMarker(`wpiVY`, MiscTypes.arsenal, [251.33845954308796, 290.5]),
new MiscMarker(`Has1o`, MiscTypes.trialComputer, [336.469312223231, 276.125]),
new MiscMarker(`6TRkO`, MiscTypes.trialComputer, [268.31784484760055, 199.1123679251593]),
@@ -646,16 +528,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`rGb4q`, MiscTypes.ammoCrate, [214.1187729037816, 377.8032517320528]),
new MiscMarker(`Nl1gJ`, MiscTypes.ammoCrate, [338.8324800970297, 334.22449117018084]),
new MiscMarker(`IYLlb`, MiscTypes.ammoCrate, [284.8147666021498, 292.1398595418589]),
- new MiscMarker(`fvuiO`, MiscTypes.wallbuy, [233.00348379819602, 119.87817395400299], { uniqueTitle: `XMG` }),
- new MiscMarker(`KjVcG`, MiscTypes.wallbuy, [260.3911978406195, 198.80150418737742], { uniqueTitle: `AK-74` }),
- new MiscMarker(`4zfaY`, MiscTypes.wallbuy, [198.92378085777787, 252.7375535307155], { uniqueTitle: `Tanto .22` }),
- new MiscMarker(`LDSqJ`, MiscTypes.wallbuy, [226.8714611903116, 252.1371056442005], { uniqueTitle: `LR 7.62` }),
- new MiscMarker(`BgXvx`, MiscTypes.wallbuy, [155.37139785865875, 288.90258018583415], { uniqueTitle: `Marine SP` }),
- new MiscMarker(`unyje`, MiscTypes.wallbuy, [168.31573473300784, 370.0835855753783], { uniqueTitle: `DM-10` }),
- new MiscMarker(`GIMoK`, MiscTypes.wallbuy, [241.74995353941142, 394.23867000110164], { uniqueTitle: `GS45` }),
- new MiscMarker(`ycejl`, MiscTypes.wallbuy, [306.853841906432, 286.6399279147556], { uniqueTitle: `ASG-89` }),
- new MiscMarker(`78Nsj`, MiscTypes.wallbuy, [240.25637620775572, 331.2362333030811], { uniqueTitle: `C9` }),
- new MiscMarker(`yVyNb`, MiscTypes.wallbuy, [266.64290906700586, 301.1046331431583], { uniqueTitle: `XM4` }),
new MiscMarker(`LSCGD`, MiscTypes.arsenal, [196.65839693949133, 196.53528362673296]),
new MiscMarker(`q5VtS`, MiscTypes.arsenal, [343.8110712025486, 345.92850114965506]),
new MiscMarker(`k3T8W`, MiscTypes.arsenal, [230.001901005147, 315.8042321349523]),
@@ -678,22 +550,6 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`Xf_Np`, MiscTypes.zipline, [233.66761294517124, 261.20198788677834]),
new MiscMarker(`PmiWx`, MiscTypes.zipline, [242.18659303461519, 286.3572703639098]),
new MiscMarker(`QPCyn`, MiscTypes.zipline, [218.7929310775186, 297.426621702756]),
- new MiscMarker(`eznoZ`, MiscTypes.door, [241.00316487358356, 281.4319355180847]),
- new MiscMarker(`YVX1t`, MiscTypes.door, [223.23959911864264, 304.67125670801784]),
- new MiscMarker(`bIFAl`, MiscTypes.door, [229.3034757756142, 327.2518894802814]),
- new MiscMarker(`Us4er`, MiscTypes.door, [251.22318106238743, 366.9163116763981]),
- new MiscMarker(`_JBkw`, MiscTypes.door, [295.14523598775605, 319.3908869231275]),
- new MiscMarker(`oObW4`, MiscTypes.door, [302.32504150392526, 273.716277985651]),
- new MiscMarker(`q8M2E`, MiscTypes.door, [324.63397937808065, 335.04635432377677]),
- new MiscMarker(`_13bg`, MiscTypes.door, [258.2520814892866, 328.17234136213443]),
- new MiscMarker(`93OQi`, MiscTypes.door, [235.49762093035028, 334.63416632668674]),
- new MiscMarker(`LvUR1`, MiscTypes.door, [248.15625, 314.09375]),
- new MiscMarker(`CZ9QV`, MiscTypes.door, [165.49959808262045, 338.1174584483644]),
- new MiscMarker(`i7idT`, MiscTypes.door, [172.4791113072325, 269.0818319557974]),
- new MiscMarker(`7wbDr`, MiscTypes.door, [192.35468820444106, 131.41311162858815]),
- new MiscMarker(`FyQUj`, MiscTypes.door, [222.44929392091163, 84.51568438708819]),
- new MiscMarker(`OcT3e`, MiscTypes.door, [174.2979247745587, 186.33576706114695]),
- new MiscMarker(`XYMOz`, MiscTypes.door, [241.25209442885952, 314.30277205618233]),
new MiscMarker(`nzPPs`, MiscTypes.zipline, [248.6913628094859, 172.08941953731676]),
new MiscMarker(`DmP2D`, MiscTypes.ziplineDown, [203.66373158219196, 430.34678589522406]),
new MiscMarker(`S9oX1`, MiscTypes.zipline, [270.376852396145, 270.7240114943104]),
@@ -704,22 +560,18 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`YGTWY`, MiscTypes.ammoCrate, [131.30501111814215, 260.23775464607394]),
new MiscMarker(`aviwJ`, MiscTypes.boatStation, [148.26672438814606, 272.6921594946782]),
new MiscMarker(`tXr0K`, MiscTypes.craftingTable, [126.56047593772148, 201.99858530641018]),
- new MiscMarker(`JYpUP`, MiscTypes.wallbuy, [127.03492945576355, 232.95667735865507], { uniqueTitle: `Tsarkov 7.62` }),
new MiscMarker(`4koGm`, MiscTypes.wallArmor1, [124.54404848604268, 290.48416642125574]),
// TEMPLE //
new MiscMarker(`pO_yK`, MiscTypes.ammoCrate, [393.0149681101784, 194.9966144035364]),
new MiscMarker(`p98WR`, MiscTypes.boatStation, [396.22556611972817, 211.42732186417336]),
new MiscMarker(`94Kgz`, MiscTypes.arsenal, [406.5183656209318, 235.5068069357965]),
- new MiscMarker(`uTBhc`, MiscTypes.wallbuy, [398.6807293035015, 184.42052684266662], { uniqueTitle: `PU-21` }),
// CASTLE ROCK //
new MiscMarker(`DvJlr`, MiscTypes.ammoCrate, [308.1046783819328, 419.7825351328977]),
new MiscMarker(`G0i4_`, MiscTypes.boatStation, [292.32889704063354, 388.744602540481]),
new MiscMarker(`1MPgO`, MiscTypes.gobblegum, [277.65375160686676, 416.554003137469]),
- new MiscMarker(`77JpN`, MiscTypes.wallbuy, [284.33094277923067, 410.17031487378046], { uniqueTitle: `XMG` }),
new MiscMarker(`fYgXz`, MiscTypes.ammoCrate, [237.15091720520783, 126.34773947525564]),
new MiscMarker(`AFWx6`, MiscTypes.boatStation, [172.11182726238388, 169.3527100757564]),
- new MiscMarker(`yuNGc`, MiscTypes.wallbuy, [193.47119996575876, 136.43358778013183], { uniqueTitle: `SVD` }),
new MiscMarker(`JbUz4`, MiscTypes.mysteryBox, [201.82236778406366, 155.31715000059387]),
// MAIN ISLAND //
new MiscMarker(`edApn`, MiscTypes.ampUnit, [297.22172097347413, 276.53858170996966]),
@@ -731,24 +583,13 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`N5x_P`, MiscTypes.boatStation, [200.4538392699185, 284.6664393873358]),
new MiscMarker(`WBGRG`, MiscTypes.boatStation, [312.5447605240193, 292.1814429597757]),
new MiscMarker(`AjJ7i`, MiscTypes.craftingTable, [308.6095065423147, 251.73266915908948]),
- new MiscMarker(`_dCtL`, MiscTypes.door, [288.84375, 250.78125]),
- new MiscMarker(`EOPEV`, MiscTypes.door, [287.78125, 301.9375]),
- new MiscMarker(`83JFo`, MiscTypes.door, [232.50655418257475, 261.69066863109407]),
- new MiscMarker(`Ux5Fy`, MiscTypes.door, [239.03697280313114, 286.2718237163247]),
- new MiscMarker(`1x0mx`, MiscTypes.door, [287.04117343836907, 276.70301654973383], { uniqueTitle: `Inclined Lift` }),
- new MiscMarker(`D5MbG`, MiscTypes.doorPower, [230.77608506070993, 270.38500473724457]),
- new MiscMarker(`cULPN`, MiscTypes.doorPower, [262.59872235828027, 322.96031472747234], { uniqueTitle: `Boat Door` }),
- new MiscMarker(`puX03`, MiscTypes.doorPower, [259.50325608293707, 232.50391134799926], { uniqueTitle: `Boat Door` }),
new MiscMarker(`1gvoI`, MiscTypes.elevator, [319.4563589889827, 302.63244912896806]),
new MiscMarker(`SY1Z2`, MiscTypes.gobblegum, [249.41723702975565, 303.69398693857204]),
- new MiscMarker(`_lR_D`, MiscTypes.trap, [289.8405469569529, 251.39354225446272]),
- new MiscMarker(`gI_wA`, MiscTypes.trap, [288.67757667054457, 300.80676946317465]),
+ new MiscMarker(`_lR_D`, MiscTypes.trap, [289.8405469569529, 251.39354225446272], { uniqueTitle: `Tentacle Trap` }),
+ new MiscMarker(`gI_wA`, MiscTypes.trap, [288.67757667054457, 300.80676946317465], { uniqueTitle: `Tentacle Trap` }),
new MiscMarker(`Pnuab`, MiscTypes.papMachine, [283.4170410459684, 276.74330644029885]),
new MiscMarker(`hco6o`, MiscTypes.wallArmor2, [324.0575364488697, 262.9676000002204]),
new MiscMarker(`mgha7`, MiscTypes.wallArmor1, [201.37727824593725, 251.0767090000584]),
- new MiscMarker(`EQ96g`, MiscTypes.wallbuy, [325.9300249223915, 286.60776697843335], { uniqueTitle: `XM4` }),
- new MiscMarker(`JHQR3`, MiscTypes.wallbuy, [283.26596956730333, 308.3863220984108], { uniqueTitle: `AK-74` }),
- new MiscMarker(`F4Mjn`, MiscTypes.wallbuy, [241.88025981670182, 258.4050398521217], { uniqueTitle: `AS VAL` }),
new MiscMarker(`q0mc8`, MiscTypes.mysteryBox, [227.11228798518707, 279.1635997250218]),
new MiscMarker(`wIhVD`, MiscTypes.mysteryBox, [204.87889263467625, 238.31512791265538]),
new MiscMarker(`jUmOE`, MiscTypes.zipline, [204.6971343038483, 293.9191527053375]),
@@ -764,38 +605,55 @@ export const MiscStore: MarkerStore = {
new MiscMarker(`YgxUp`, MiscTypes.ammoCrate, [244.875, 285.65625]),
new MiscMarker(`6SBd5`, MiscTypes.ammoCrate, [269.81884381995974, 256.8588993536241]),
new MiscMarker(`LMrCG`, MiscTypes.craftingTable, [252.65625, 302]),
- new MiscMarker(`CTP4L`, MiscTypes.door, [283.13496536547103, 298.7052786620223]),
- new MiscMarker(`3sMT0`, MiscTypes.door, [286.55652377111375, 266.42837660123934]),
- new MiscMarker(`Tcos8`, MiscTypes.door, [241.84375, 286.6875]),
- new MiscMarker(`ft64F`, MiscTypes.door, [245.34375, 277.21875]),
- new MiscMarker(`MArfW`, MiscTypes.door, [238.28125, 239.09375]),
- new MiscMarker(`Z3MPg`, MiscTypes.door, [238.35490492396977, 302.0274755370141]),
- new MiscMarker(`a5ru5`, MiscTypes.door, [225.36336206270096, 301.74249194838507]),
- new MiscMarker(`rhih5`, MiscTypes.door, [271.55219005823653, 276.45691874285905], { uniqueTitle: `Inclined Lift` }),
- new MiscMarker(`mTnUT`, MiscTypes.doorPower, [211.83383472310055, 270.9445225243447]),
- new MiscMarker(`FTNny`, MiscTypes.doorPower, [212.04507005770893, 288.4066435186371]),
- new MiscMarker(`p25xL`, MiscTypes.doorPower, [301.79623492671783, 269.34795885490774]),
- new MiscMarker(`2bDxl`, MiscTypes.doorPower, [285.4902945141612, 286.09017860960637]),
- new MiscMarker(`k_wfq`, MiscTypes.doorPower, [249.17003928084094, 296.2336733144075]),
- new MiscMarker(`pWDOG`, MiscTypes.doorPower, [250.20620271842816, 250.86062173164112]),
- new MiscMarker(`h9zst`, MiscTypes.doorPower, [259.4226038211776, 243.82561733960162]),
new MiscMarker(`J5McK`, MiscTypes.elevator, [321.34375, 303.65625]),
new MiscMarker(`MX0i1`, MiscTypes.gobblegum, [284.2851969416114, 281.7312872984861]),
- new MiscMarker(`mnhja`, MiscTypes.trap, [302.6875, 285]),
+ new MiscMarker(`mnhja`, MiscTypes.trap, [302.6875, 285], { uniqueTitle: `Tentacle Trap` }),
+ new MiscMarker(`zs2vI`, MiscTypes.trap, [244.42086833218352, 277.05925054991457], { uniqueTitle: `Tentacle Trap` }),
new MiscMarker(`tJ0GF`, MiscTypes.trap, [227.61998640526338, 271.4110057517518], { uniqueTitle: `Void Canon Trap` }),
new MiscMarker(`K9sai`, MiscTypes.papMachine, [265.3219755546247, 276.4658724841917]),
new MiscMarker(`Ojr9B`, MiscTypes.mysteryBox, [264.21875, 240.59375]),
new MiscMarker(`C7_Bh`, MiscTypes.mysteryBox, [254.11022583563894, 312.81398340056654]),
new MiscMarker(`Kqbwl`, MiscTypes.wallArmor1, [206.81535488460307, 290.64553908053466]),
- new MiscMarker(`w0fbt`, MiscTypes.wallbuy, [301.5634536941064, 294.6754273738092], { uniqueTitle: `GS45` }),
- new MiscMarker(`KsBG8`, MiscTypes.wallbuy, [294.19030976573237, 289.04240130454195], { uniqueTitle: `ASG-89` }),
- new MiscMarker(`1bjPY`, MiscTypes.wallbuy, [302.34375, 255.90625], { uniqueTitle: `Tanto .22` }),
- new MiscMarker(`EeAjA`, MiscTypes.wallbuy, [260.26474908706786, 292.5024709259978], { uniqueTitle: `C9` }),
- new MiscMarker(`kzPC1`, MiscTypes.wallbuy, [248.8489336765139, 263.518870815491], { uniqueTitle: `Marine-SP` }),
- new MiscMarker(`HhY0_`, MiscTypes.wallbuy, [213.9061948934098, 253.16855562546598], { uniqueTitle: `Goblin MK2` }),
- new MiscMarker(`QpYZL`, MiscTypes.wallbuy, [222.14994470956643, 301.70984599036944], { uniqueTitle: `PP-919`, uniqueDesc: `On the ramp up from the docks. Under the bridge from engineering.` }),
new MiscMarker(`3XxrN`, MiscTypes.workbench, [262.28125, 275.125]),
new MiscMarker(`h5zvQ`, MiscTypes.zipline, [204.6971343038483, 293.9191527053375]),
+ ],
+ [MapIds.citadelle]: [
+ new MiscMarker(`cRy2a`, MiscTypes.exfillRadio, [141.10643778702993, 199.97417395454264]),
+ new MiscMarker(`cuTWH`, MiscTypes.rampageInducer, [62.201606308537244, 238.1700356465058]),
+ new MiscMarker(`Ar6ED`, MiscTypes.arsenal, [149.70681428064412, 217.91698153726261]),
+ new MiscMarker(`7_6HP`, MiscTypes.arsenal, [243.83497375959914, 235.3203986973875]),
+ new MiscMarker(`_xSM9`, MiscTypes.arsenal, [404.4482610924504, 210.16437375246528]),
+ new MiscMarker(`Q3kLb`, MiscTypes.wallArmor1, [123.51237768859781, 181.8022970559544]),
+ new MiscMarker(`tBdk7`, MiscTypes.wallArmor1, [324.64228661377797, 213.6064892958248]),
+ new MiscMarker(`5vP1u`, MiscTypes.wallArmor2, [435.7880203647192, 199.42468944036344]),
+ new MiscMarker(`1chs0`, MiscTypes.wallArmor2, [332.60800553028236, 383.6976824570178]),
+ new MiscMarker(`GXp4k`, MiscTypes.craftingTable, [131.07883861420314, 206.31033831444122]),
+ new MiscMarker(`RI_4X`, MiscTypes.craftingTable, [340.8117221089866, 201.93612485902912]),
+ new MiscMarker(`bjkpw`, MiscTypes.ammoCrate, [94.87180470519993, 248.4250920621076]),
+ new MiscMarker(`DS81I`, MiscTypes.ammoCrate, [162.93333982689512, 310.144307050322]),
+ new MiscMarker(`QpgxE`, MiscTypes.ammoCrate, [193.0254032240735, 125.69630424234309]),
+ new MiscMarker(`pWiqW`, MiscTypes.ammoCrate, [222.53752308855312, 252.91642656543036]),
+ new MiscMarker(`DCRkJ`, MiscTypes.ammoCrate, [243.27233022356458, 202.04381836208833]),
+ new MiscMarker(`A9oOB`, MiscTypes.ammoCrate, [351.1449579353626, 220.00482622485865]),
+ new MiscMarker(`oLQ9J`, MiscTypes.ammoCrate, [384.69689221802076, 178.68801572249956]),
+ new MiscMarker(`HPZsv`, MiscTypes.ammoCrate, [389.515772611941, 235.99283188937252]),
+ new MiscMarker(`v5zjA`, MiscTypes.ammoCrate, [349.39365394910436, 452.7766754130463]),
+ new MiscMarker(`eaKnf`, MiscTypes.ammoCrate, [317.4971609833253, 357.376031444999]),
+ new MiscMarker(`BX4Yc`, MiscTypes.ammoCrate, [362.93606626898236, 325.7413505499213]),
+ new MiscMarker(`7RikG`, MiscTypes.mysteryBox, [132.14771268088154, 308.86905860729854]),
+ new MiscMarker(`INwJv`, MiscTypes.mysteryBox, [185.63607257552408, 176.3280491624858]),
+ new MiscMarker(`2Hhik`, MiscTypes.mysteryBox, [67.81204046724625, 190.3120423559267]),
+ new MiscMarker(`XUVvn`, MiscTypes.mysteryBox, [331.08840672014986, 237.604621293284]),
+ new MiscMarker(`RhTso`, MiscTypes.mysteryBox, [337.8934902117702, 306.3246605641147]),
+ new MiscMarker(`HXGN3`, MiscTypes.mysteryBox, [345.0454590209828, 437.2861598617234]),
+ new MiscMarker(`eYJta`, MiscTypes.gobblegum, [109.90142670462268, 200.96260883131004]),
+ new MiscMarker(`Ilgnf`, MiscTypes.gobblegum, [299.98603717843434, 237.29736623161386]),
+ new MiscMarker(`rbwGR`, MiscTypes.gobblegum, [346.8204556894263, 370.3113916492096]),
+ new MiscMarker(`EBKrd`, MiscTypes.papMachine, [302.44909212251684, 369.75129809989096]),
+ new MiscMarker(`8A54Q`, MiscTypes.cannon, [230.035577125343, 219.70194768416548], { uniqueDesc: `Cost: 500\nCan be used to fast travel back to spawn or into the dining room (after collecting 2 parts). Every 10 rounds you can choose between 1 of 2 powerups that spawn between both routes.`, linkedItems: `OQb8p,WAuh7` }),
+ new MiscMarker(`IZOQg`, MiscTypes.caveSlide, [287.0016230344017, 376.3835278190063], { uniqueDesc: `Cost: 500\nCan be used to fast travel back to spawn. Used as part of the Raven ritual step to obtain the Raven Talon.`, linkedItems: `RXF7n` }),
+ new MiscMarker(`pCzAI`, MiscTypes.trap, [234.8276006274729, 273.9831717100168], { uniqueTitle: `Oil Trap`, uniqueDesc: `Cost: 1000\nCan be set on fire for additional damage.` }),
+ new MiscMarker(`nt3Sn`, MiscTypes.trap, [229.28730339245521, 167.27529993564852], { uniqueTitle: `Oil Trap`, uniqueDesc: `Cost: 1000\nCan be set on fire for additional damage.` }),
]
};
@@ -803,7 +661,7 @@ export const MiscStore: MarkerStore = {
export const AllMiscStores = (): MarkerStore => {
const mergedStore: MarkerStore = {};
- const stores = [MiscStore, PerkStore, StaticEggStore, StaticQuestStore];
+ const stores = [MiscStore, PerkStore, StaticEggStore, StaticQuestStore, WallbuyStore, DoorStore];
for (const store of stores) {
for (const key in store) {
diff --git a/src/data/perks.tsx b/src/data/perks.tsx
index 8e029bc6..958e1496 100644
--- a/src/data/perks.tsx
+++ b/src/data/perks.tsx
@@ -68,6 +68,12 @@ export const Perks = {
title: 'Melee Macchiato',
icon: IconFileNames.meleeMacchiato,
}),
+ vulture: new Item({
+ id: 'vultureAid',
+ title: 'Vulture Aid',
+ // icon: IconFileNames.vulture,
+ icon: IconFileNames.vulture,
+ }),
};
export const PerkStore: MarkerStore = {
@@ -144,6 +150,17 @@ export const PerkStore: MarkerStore = {
new MiscMarker(`KIuKk`, Perks.jugg, [239.63390968267203, 278.29268337414294]),
new MiscMarker(`JubO2`, Perks.elemental, [208.15153148056928, 309.7389992873544]),
],
+ [MapIds.citadelle]: [
+ new MiscMarker(`sHBxE`, Perks.deadshot, [171.46832853492387, 152.85308855237312]),
+ new MiscMarker(`p_SKt`, Perks.speed, [214.2486937122144, 303.9718379759372]),
+ new MiscMarker(`w63q8`, Perks.meleeMacchiato, [293.3875225716126, 284.21916249124973]),
+ new MiscMarker(`cP_Ms`, Perks.elemental, [293.94318075830125, 153.0838304327259]),
+ new MiscMarker(`miVTY`, Perks.jugg, [324.64228661377797, 225.70260122669285]),
+ new MiscMarker(`xa_D0`, Perks.staminup, [406.76607975552446, 153.4224091921224]),
+ new MiscMarker(`wwGqo`, Perks.vulture, [452.7095809502072, 254.33556167620338]),
+ new MiscMarker(`Hub2S`, Perks.quick, [371.53318266103963, 421.4483055393233]),
+ new MiscMarker(`LAuUx`, Perks.wunderFizz, [152.04365048882423, 175.6295951969671], { uniqueDesc: `Spawns at round 25.` }),
+ ],
/////////////////////Outbreak/////////////////////////
diff --git a/src/data/types.tsx b/src/data/types.tsx
index 6aaf40af..7c24d519 100644
--- a/src/data/types.tsx
+++ b/src/data/types.tsx
@@ -1,5 +1,6 @@
import { Item, MiscMarker } from "../classes";
import { IconFileNames } from "./icons";
+import { IntelType } from "./intel";
/////////////////////Misc/////////////////////////
export const MiscTypes = {
@@ -43,33 +44,62 @@ export const MiscTypes = {
wallArmor1: new Item({ title: 'Armor Wall Buy', icon: IconFileNames.armorWall1, desc: `Level 2 Vest\nCost: 4,000` }),
wallArmor2: new Item({ title: 'Armor Wall Buy', icon: IconFileNames.armorWall2, desc: `Level 3 Vest\nCost: 10,000\n(Or 14,000 if lvl 2 vest not acquired)` }),
door: new Item({ title: 'Door Buy', icon: IconFileNames.door }),
- boatStation: new Item({ title: 'Boat Station', icon: IconFileNames.boatStation }),
doorPower: new Item({ title: 'Power Door', desc: 'Enable power to open this door.', icon: IconFileNames.doorPower, }),
+ boatStation: new Item({ title: 'Boat Station', icon: IconFileNames.boatStation }),
gobblegum: new Item({ title: 'Gobblegum Machine', icon: IconFileNames.gobblegum }),
ampUnit: new Item({ title: 'A.M.P Unit', desc: `Protect for a short time to provide local power to the area.`, icon: IconFileNames.power }),
elevator: new Item({ title: 'Elevator', icon: IconFileNames.jumpPad, }),
+ cannon: new Item({ title: 'Cannon', icon: IconFileNames.jumpPad, }),
+ caveSlide: new Item({ title: 'Cave Slide', icon: IconFileNames.landingPad, }),
};
/////////////////////Markers/////////////////////////
-export type LayerGroupings = {
- intelAudio: Item;
- intelArtifacts: Item;
- intelDocuments: Item;
- perks: Item;
- misc: Item;
- easterEggs: Item;
- mainQuest: Item;
+export class LayerGrouping {
+ id: LayerGroupingId;
+ intelType: IntelType | null;
+ constructor(id: LayerGroupingId, intelType: IntelType | null) {
+ this.id = id;
+ if (intelType) {
+ this.intelType = intelType;
+ } else {
+ this.intelType = null;
+ }
+ }
+}
+export type LayerGroupingId =
+ 'Intel - Audio' |
+ 'Intel - Artifacts' |
+ 'Intel - Documents' |
+ 'Perks' |
+ 'Miscellaneous' |
+ 'Doors' |
+ 'Wall Buys' |
+ 'Easter Eggs' |
+ 'Main Quest';
+
+type LayerGroupings = {
+ intelAudio: LayerGrouping;
+ intelArtifacts: LayerGrouping;
+ intelDocuments: LayerGrouping;
+ perks: LayerGrouping;
+ misc: LayerGrouping;
+ doors: LayerGrouping;
+ wallbuy: LayerGrouping;
+ easterEggs: LayerGrouping;
+ mainQuest: LayerGrouping;
};
//TODO: combine this type with MarkerStore as this should really just be one single thing
export const MarkerLayerTypes: LayerGroupings = {
- intelAudio: new Item({ id: 'intel', title: 'Intel - Audio Logs' }),
- intelArtifacts: new Item({ id: 'intel', title: 'Intel - Artifacts' }),
- intelDocuments: new Item({ id: 'intel', title: 'Intel - Documents' }),
- perks: new Item({ id: 'perks', title: 'Perks' }),
- misc: new Item({ id: 'misc', title: 'Miscellaneous' }),
- easterEggs: new Item({ id: 'easterEggs', title: 'Easter Eggs' }),
- mainQuest: new Item({ id: 'mainQuest', title: 'Main Quest' }),
+ intelAudio: new LayerGrouping('Intel - Audio', IntelType.Audio),
+ intelArtifacts: new LayerGrouping('Intel - Artifacts', IntelType.Artifact),
+ intelDocuments: new LayerGrouping('Intel - Documents', IntelType.Docs),
+ perks: new LayerGrouping('Perks', null),
+ misc: new LayerGrouping('Miscellaneous', null),
+ doors: new LayerGrouping('Doors', null),
+ wallbuy: new LayerGrouping('Wall Buys', null),
+ easterEggs: new LayerGrouping('Easter Eggs', null),
+ mainQuest: new LayerGrouping('Main Quest', null),
};
export interface MarkerStore {
diff --git a/src/data/wallbuys.tsx b/src/data/wallbuys.tsx
new file mode 100644
index 00000000..579b0226
--- /dev/null
+++ b/src/data/wallbuys.tsx
@@ -0,0 +1,214 @@
+import { MiscMarker } from "../classes";
+import { MapIds } from "./intel";
+import { MarkerStore, MiscTypes } from "./types";
+
+// Used to generate IDs for all of the below misc markers:
+// https://nanoid.jormaechea.com.ar/?alphabet=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz&length=5
+// Please use the existing settings included in the URL and check for duplicate ids when possible (it`s very very unlikely but still possible).
+// Non collectible items that need icons on the respective maps
+
+/////////////////////Round Based Misc Items/////////////////////////
+export const WallbuyStore: MarkerStore = {
+ [MapIds.dieMaschine]: [
+ new MiscMarker(`68O2O`, MiscTypes.wallbuy, [261.1077465118457, 355], { uniqueTitle: `1911` }),
+ new MiscMarker(`lmW4Q`, MiscTypes.wallbuy, [276.7037503511565, 255.75], { uniqueTitle: `MP5` }),
+ new MiscMarker(`qnd1q`, MiscTypes.wallbuy, [340.9758521397134, 318.75], { uniqueTitle: `Gallo` }),
+ new MiscMarker(`sLfEw`, MiscTypes.wallbuy, [220.98347152062405, 256.6785228855506], { uniqueTitle: `Hauer 77` }),
+ new MiscMarker(`V1v4Z`, MiscTypes.wallbuy, [179.74021678059745, 256], { uniqueTitle: `Diamatti` }),
+ new MiscMarker(`znu5z`, MiscTypes.wallbuy, [211.11624215750538, 158.125], { uniqueTitle: `M16` }),
+ ],
+ [MapIds.dieMaschineUnderground]: [
+ new MiscMarker(`GdJqJ`, MiscTypes.wallbuy, [325.4370259387583, 188.25], { uniqueTitle: `XM4` }),
+ new MiscMarker(`OwuYN`, MiscTypes.wallbuy, [189.74051249234878, 245], { uniqueTitle: `RPD` }),
+ new MiscMarker(`CRQrY`, MiscTypes.wallbuy, [99.48320905903957, 413], { uniqueTitle: `LW3 - Tundra` }),
+ new MiscMarker(`6wZVg`, MiscTypes.wallbuy, [185.47998163708195, 359.25], { uniqueTitle: `Krig 6` }),
+ new MiscMarker(`FUa64`, MiscTypes.wallbuy, [334.4108888394265, 318.5], { uniqueTitle: `Type 63` }),
+ new MiscMarker(`TUgDl`, MiscTypes.wallbuy, [210.9681570307718, 296], { uniqueTitle: `AK-74u` }),
+ ],
+ [MapIds.firebaseZ]: [
+ new MiscMarker(`77gVD`, MiscTypes.wallbuy, [353.48127867777885, 317.5], { uniqueTitle: `M16` }),
+ new MiscMarker(`z46lQ`, MiscTypes.wallbuy, [331.09573696038956, 278.375], { uniqueTitle: `Ak-74u` }),
+ new MiscMarker(`8ZbjF`, MiscTypes.wallbuy, [432.8419561756719, 283.75], { uniqueTitle: `1911` }),
+ new MiscMarker(`STzNi`, MiscTypes.wallbuy, [239.21495926584885, 261.75], { uniqueTitle: `AUG` }),
+ new MiscMarker(`TChc2`, MiscTypes.wallbuy, [278.60534460155446, 153.125], { uniqueTitle: `DMR 14` }),
+ new MiscMarker(`Oc61M`, MiscTypes.wallbuy, [268.34635967787244, 216.5], { uniqueTitle: `QBZ-83` }),
+ new MiscMarker(`T2xi0`, MiscTypes.wallbuy, [359.83813091113404, 212], { uniqueTitle: `Hauer 77` }),
+ new MiscMarker(`OSfjR`, MiscTypes.wallbuy, [430.4222586384493, 350.75], { uniqueTitle: `FFAR 1` }),
+ new MiscMarker(`n4iky`, MiscTypes.wallbuy, [382.9138074726098, 385.5], { uniqueTitle: `M82` }),
+ new MiscMarker(`TBoB4`, MiscTypes.wallbuy, [284.8504518213316, 361.875], { uniqueTitle: `Type 63` }),
+ new MiscMarker(`3exzd`, MiscTypes.wallbuy, [191.4971626556794, 350], { uniqueTitle: `AK-47` }),
+ new MiscMarker(`IC4tW`, MiscTypes.wallbuy, [215.2387114898399, 331.5], { uniqueTitle: `KSP` }),
+ new MiscMarker(`pYZAK`, MiscTypes.wallbuy, [148.46469238692762, 343.75], { uniqueTitle: `RPD` }),
+ ],
+ [MapIds.firebaseZSpawn]: [
+ new MiscMarker(`UyWMz`, MiscTypes.wallbuy, [325.9028748010113, 223.5], { uniqueTitle: `Magnum` }),
+ new MiscMarker(`8Tm13`, MiscTypes.wallbuy, [315.20624122108813, 328], { uniqueTitle: `Bullfrog` }),
+ new MiscMarker(`zQK69`, MiscTypes.wallbuy, [115.12184661485156, 215.125], { uniqueTitle: `Gallo` }),
+ new MiscMarker(`il15s`, MiscTypes.wallbuy, [314.4659378218934, 149.25], { uniqueTitle: `Stoner-63` }),
+ ],
+ [MapIds.mauerDerToten]: [
+ new MiscMarker(`qUsdq`, MiscTypes.wallbuy, [333.1876563339571, 200.75], { uniqueTitle: `Krig 6` }),
+ new MiscMarker(`_MhF2`, MiscTypes.wallbuy, [287.957458635193, 312], { uniqueTitle: `M16` }),
+ new MiscMarker(`9iDLM`, MiscTypes.wallbuy, [264.4634433306776, 206.21861097788877], { uniqueTitle: `Milano 821` }),
+ new MiscMarker(`6n4vD`, MiscTypes.wallbuy, [159.12485177224806, 196.85347379562404], { uniqueTitle: `XM4` }),
+ new MiscMarker(`v08K4`, MiscTypes.wallbuy, [150.48213221909987, 80.55439072511358], { uniqueTitle: `DMR 14` }),
+ new MiscMarker(`xRomg`, MiscTypes.wallbuy, [157.85840261969585, 417.3706776955915], { uniqueTitle: `RPD` }),
+ ],
+ [MapIds.mauerDerTotenStreets]: [
+ new MiscMarker(`hELxf`, MiscTypes.wallbuy, [286.69157898902415, 102.51138061773712], { uniqueTitle: `Stoner-63` }),
+ new MiscMarker(`Bv7or`, MiscTypes.wallbuy, [199.4014593131159, 175.9347523985546], { uniqueTitle: `QBZ-83` }),
+ new MiscMarker(`0NXak`, MiscTypes.wallbuy, [399.8494608215523, 326], { uniqueTitle: `Type 63` }),
+ new MiscMarker(`8kTWI`, MiscTypes.wallbuy, [286.72101221026105, 380.25], { uniqueTitle: `AK-74u` }),
+ new MiscMarker(`X4lhW`, MiscTypes.wallbuy, [140.47611680346853, 340], { uniqueTitle: `MP5` }),
+ new MiscMarker(`jQOwR`, MiscTypes.wallbuy, [186.48321783920994, 404.375], { uniqueTitle: `Gallo SA12` }),
+ new MiscMarker(`ZEXRC`, MiscTypes.wallbuy, [340.85034092382944, 413.75], { uniqueTitle: `Diamatti` }),
+ new MiscMarker(`vdYgv`, MiscTypes.wallbuy, [323.38931113034687, 313.6534246276432], { uniqueTitle: `Hauer 77` }),
+ new MiscMarker(`ZUMvb`, MiscTypes.wallbuy, [307.8645191395491, 294.70791575751707], { uniqueTitle: `KSP 45` }),
+ ],
+ [MapIds.forsaken]: [
+ new MiscMarker(`LinzC`, MiscTypes.wallbuy, [252.94734525704655, 91.75], { uniqueTitle: `1911` }),
+ new MiscMarker(`DkPDk`, MiscTypes.wallbuy, [285.1908512032962, 57.25], { uniqueTitle: `Diamatti` }),
+ new MiscMarker(`hPvQY`, MiscTypes.wallbuy, [381.70090364266315, 78.25], { uniqueTitle: `Hauer 77` }),
+ new MiscMarker(`ftW_1`, MiscTypes.wallbuy, [236.37046539938197, 307.5], { uniqueTitle: `Pellington` }),
+ new MiscMarker(`xbmnw`, MiscTypes.wallbuy, [320.9730698099073, 182.9375], { uniqueTitle: `DMR 14` }),
+ new MiscMarker(`5Bzt4`, MiscTypes.wallbuy, [365.2261190186347, 203.5], { uniqueTitle: `Bullfrog` }),
+ new MiscMarker(`e6LK0`, MiscTypes.wallbuy, [447.66361667759156, 220.9375], { uniqueTitle: `Gallo` }),
+ new MiscMarker(`5dWjB`, MiscTypes.wallbuy, [159.05660876486562, 183.9375], { uniqueTitle: `QBZ-83` }),
+ new MiscMarker(`mOTWb`, MiscTypes.wallbuy, [154.86786332989982, 158.9375], { uniqueTitle: `Milano 821` }),
+ new MiscMarker(`nNJxZ`, MiscTypes.wallbuy, [198.60605627867778, 273.5], { uniqueTitle: `Type 63s` }),
+ new MiscMarker(`PO_Zs`, MiscTypes.wallbuy, [81.87718419327653, 85], { uniqueTitle: `MP5` }),
+ new MiscMarker(`PE7Yv`, MiscTypes.wallbuy, [124.48701657458564, 175], { uniqueTitle: `AUG` }),
+ new MiscMarker(`Cjvh8`, MiscTypes.wallbuy, [85.69720451791603, 91.59201547112765], { uniqueTitle: `XM4` }),
+ new MiscMarker(`IHqvu`, MiscTypes.wallbuy, [157.2287878078472, 232], { uniqueTitle: `FFAR 1` }),
+ new MiscMarker(`6YJ_i`, MiscTypes.wallbuy, [110.609525704654, 202.25], { uniqueTitle: `M82` }),
+ new MiscMarker(`Dzmo9`, MiscTypes.wallbuy, [118.23181243562132, 215.375], { uniqueTitle: `RPD` }),
+ new MiscMarker(`0U1dM`, MiscTypes.wallbuy, [163.22869884820676, 344.625], { uniqueTitle: `FFAR1` }),
+ ],
+ [MapIds.forsakenUnderground]: [
+ new MiscMarker(`EWbhd`, MiscTypes.wallbuy, [345.4748735836689, 228.375], { uniqueTitle: `Krig` }),
+ new MiscMarker(`wTePJ`, MiscTypes.wallbuy, [222.46318007304055, 263.75], { uniqueTitle: `M60` }),
+ new MiscMarker(`OFSTG`, MiscTypes.wallbuy, [150.21780597434218, 470.75], { uniqueTitle: `AK-74u` }),
+ ],
+
+ /////////////////////Outbreak Misc Items/////////////////////////
+ [MapIds.zoo]: [
+ new MiscMarker(`XHBng`, MiscTypes.wallbuy, [169.788791011143, 373.51495741647]),
+ new MiscMarker(`C48eX`, MiscTypes.wallbuy, [199.8618860850235, 339.953248441663]),
+ new MiscMarker(`hUgNo`, MiscTypes.wallbuy, [226.05336642166992, 284.46966314770833]),
+ new MiscMarker(`5mHNU`, MiscTypes.wallbuy, [271.9013083975607, 327.48529982779115]),
+ new MiscMarker(`uLBiL`, MiscTypes.wallbuy, [378.694470373232, 279.2212709056113]),
+ new MiscMarker(`IseUH`, MiscTypes.wallbuy, [377.02986155344405, 406.01380851879895]),
+ new MiscMarker(`s6Ggz`, MiscTypes.wallbuy, [258.7671967862002, 112.99627959809773]),
+ new MiscMarker(`GRImF`, MiscTypes.wallbuy, [117.70440343659759, 383.7635095097696]),
+ new MiscMarker(`C8ExY`, MiscTypes.wallbuy, [150.5199691988099, 271.05612018196865]),
+ new MiscMarker(`xn8bs`, MiscTypes.wallbuy, [189.5625, 209.9375]),
+ ],
+ [MapIds.duga]: [
+ new MiscMarker(`pWj7D`, MiscTypes.wallbuy, [240.40983939603782, 309.6215067926123]),
+ new MiscMarker(`_et7e`, MiscTypes.wallbuy, [179.7866999930869, 311.14179392441775]),
+ new MiscMarker(`QJLeT`, MiscTypes.wallbuy, [162.5180873040452, 353.77125671112447]),
+ new MiscMarker(`Aa7h5`, MiscTypes.wallbuy, [218.9804723907548, 387.53389130258694]),
+ new MiscMarker(`Z2G7z`, MiscTypes.wallbuy, [295.8011933010631, 273.74144329217023]),
+ new MiscMarker(`jyPt2`, MiscTypes.wallbuy, [329.9425791075898, 236.51538664159438]),
+ ],
+ [MapIds.ruka]: [
+ new MiscMarker(`IDIaG`, MiscTypes.wallbuy, [257.623049666483, 419.4945666147199]),
+ new MiscMarker(`ViQKB`, MiscTypes.wallbuy, [330.8199221096839, 219.85452285253052]),
+ new MiscMarker(`bg0KW`, MiscTypes.wallbuy, [149.24142150677562, 197.01558759817974]),
+ new MiscMarker(`ddBw7`, MiscTypes.wallbuy, [267.5912024956175, 231.7284640168234]),
+ new MiscMarker(`G3Lx1`, MiscTypes.wallbuy, [290.428408237228, 265.0335171292474]),
+ new MiscMarker(`aM_1i`, MiscTypes.wallbuy, [278.76550804955167, 148.92171676191577]),
+ ],
+ [MapIds.alpine]: [
+ new MiscMarker(`eAUAb`, MiscTypes.wallbuy, [237.5596066858896, 394.0444742792774]),
+ new MiscMarker(`OUQrp`, MiscTypes.wallbuy, [216.02706746094876, 85.24573718234292]),
+ new MiscMarker(`X6Bf3`, MiscTypes.wallbuy, [164.33578728860493, 343.10287670138746]),
+ new MiscMarker(`31UO9`, MiscTypes.wallbuy, [317.30615777129947, 67.41337618919444]),
+ new MiscMarker(`GpZS_`, MiscTypes.wallbuy, [139.88254903819504, 197.95937117870153]),
+ new MiscMarker(`K7ay6`, MiscTypes.wallbuy, [378.35148690180966, 214.6089341851221]),
+ new MiscMarker(`UzNkV`, MiscTypes.wallbuy, [216.07746476812133, 139.11181913168872]),
+ ],
+ [MapIds.golova]: [
+ new MiscMarker(`wmuWG`, MiscTypes.wallbuy, [391.01912850701865, 349.97680753791883]),
+ new MiscMarker(`PHx0y`, MiscTypes.wallbuy, [259.9441282565234, 324.96215738223185]),
+ new MiscMarker(`NUegF`, MiscTypes.wallbuy, [255.30544263370194, 278.5150283276749]),
+ new MiscMarker(`WgZlk`, MiscTypes.wallbuy, [247.78045977198417, 260.83585172484396]),
+ new MiscMarker(`EDdVd`, MiscTypes.wallbuy, [189.4695980177873, 406.4654447254141]),
+ new MiscMarker(`Cj7z7`, MiscTypes.wallbuy, [102.99143995016017, 332.67423226159815]),
+ new MiscMarker(`Sv2Mr`, MiscTypes.wallbuy, [133.40913902258612, 294.7666483087646]),
+ new MiscMarker(`lf_Z1`, MiscTypes.wallbuy, [213.79236709189115, 283.7899469967797]),
+ new MiscMarker(`wY8A6`, MiscTypes.wallbuy, [175.03616784419052, 335.71818781886225]),
+ new MiscMarker(`ZPs7o`, MiscTypes.wallbuy, [285.4329306073199, 141.63750920858075], { uniqueTitle: `DMR 14` }),
+ ],
+ [MapIds.sanatorium]: [
+ new MiscMarker(`Fgozl`, MiscTypes.wallbuy, [369.03998522090853, 182.79574040351952]),
+ new MiscMarker(`KKSy2`, MiscTypes.wallbuy, [240.2366599253267, 64.20726302897477]),
+ new MiscMarker(`RGkIq`, MiscTypes.wallbuy, [156.49071639701307, 125.97763641344636]),
+ new MiscMarker(`wvhSe`, MiscTypes.wallbuy, [151.36399346608587, 385.4893157572437]),
+ new MiscMarker(`wYhoP`, MiscTypes.wallbuy, [221.0869496733043, 267.7446709720566]),
+ new MiscMarker(`MWdg9`, MiscTypes.wallbuy, [257.38248348472337, 352.125]),
+ new MiscMarker(`Li3bP`, MiscTypes.wallbuy, [280.5175197881211, 200.75]),
+ new MiscMarker(`a_JVl`, MiscTypes.wallbuy, [260.2622177801051, 212]),
+ new MiscMarker(`FLBef`, MiscTypes.wallbuy, [279.026156408071, 251]),
+ new MiscMarker(`O6WkK`, MiscTypes.wallbuy, [309.86762509032627, 210.59375]),
+ new MiscMarker(`Gf_oJ`, MiscTypes.wallbuy, [283.2996720837837, 136.5767028690432]),
+ ],
+ [MapIds.collateral]: [
+ new MiscMarker(`K1b_U`, MiscTypes.wallbuy, [274.1902735759488, 271.97980445743264]),
+ new MiscMarker(`1NE2i`, MiscTypes.wallbuy, [329.35910463308284, 392.12343294135957]),
+ ],
+ [MapIds.armada]: [
+ new MiscMarker(`7dw4P`, MiscTypes.wallbuy, [273.61241453743673, 248.625]),
+ new MiscMarker(`MplYv`, MiscTypes.wallbuy, [237.96560363435918, 272.5625]),
+ new MiscMarker(`i2E9R`, MiscTypes.wallbuy, [175.35905393637324, 164]),
+ new MiscMarker(`K7xgo`, MiscTypes.wallbuy, [318.5914958959441, 382.375]),
+ ],
+
+ /////////////////////Bo6 Misc Items/////////////////////////
+ [MapIds.libertyFalls]: [
+ new MiscMarker(`fvuiO`, MiscTypes.wallbuy, [233.00348379819602, 119.87817395400299], { uniqueTitle: `XMG` }),
+ new MiscMarker(`KjVcG`, MiscTypes.wallbuy, [260.3911978406195, 198.80150418737742], { uniqueTitle: `AK-74` }),
+ new MiscMarker(`4zfaY`, MiscTypes.wallbuy, [198.92378085777787, 252.7375535307155], { uniqueTitle: `Tanto .22` }),
+ new MiscMarker(`LDSqJ`, MiscTypes.wallbuy, [226.8714611903116, 252.1371056442005], { uniqueTitle: `LR 7.62` }),
+ new MiscMarker(`BgXvx`, MiscTypes.wallbuy, [155.37139785865875, 288.90258018583415], { uniqueTitle: `Marine SP` }),
+ new MiscMarker(`unyje`, MiscTypes.wallbuy, [168.31573473300784, 370.0835855753783], { uniqueTitle: `DM-10` }),
+ new MiscMarker(`GIMoK`, MiscTypes.wallbuy, [241.74995353941142, 394.23867000110164], { uniqueTitle: `GS45` }),
+ new MiscMarker(`ycejl`, MiscTypes.wallbuy, [306.853841906432, 286.6399279147556], { uniqueTitle: `ASG-89` }),
+ new MiscMarker(`78Nsj`, MiscTypes.wallbuy, [240.25637620775572, 331.2362333030811], { uniqueTitle: `C9` }),
+ new MiscMarker(`yVyNb`, MiscTypes.wallbuy, [266.64290906700586, 301.1046331431583], { uniqueTitle: `XM4` }),
+ ],
+ [MapIds.terminusBiolabs]: [
+ // ISLANDS // CRAB ISLAND //
+ new MiscMarker(`JYpUP`, MiscTypes.wallbuy, [127.03492945576355, 232.95667735865507], { uniqueTitle: `Tsarkov 7.62` }),
+ // TEMPLE //
+ new MiscMarker(`uTBhc`, MiscTypes.wallbuy, [398.6807293035015, 184.42052684266662], { uniqueTitle: `PU-21` }),
+ // CASTLE ROCK //
+ new MiscMarker(`77JpN`, MiscTypes.wallbuy, [284.33094277923067, 410.17031487378046], { uniqueTitle: `XMG` }),
+
+ new MiscMarker(`yuNGc`, MiscTypes.wallbuy, [193.47119996575876, 136.43358778013183], { uniqueTitle: `SVD` }),
+ // MAIN ISLAND //
+ new MiscMarker(`EQ96g`, MiscTypes.wallbuy, [325.9300249223915, 286.60776697843335], { uniqueTitle: `XM4` }),
+ new MiscMarker(`JHQR3`, MiscTypes.wallbuy, [283.26596956730333, 308.3863220984108], { uniqueTitle: `AK-74` }),
+ new MiscMarker(`F4Mjn`, MiscTypes.wallbuy, [241.88025981670182, 258.4050398521217], { uniqueTitle: `AS VAL` }),
+ ],
+ [MapIds.terminusPrison]: [
+ new MiscMarker(`w0fbt`, MiscTypes.wallbuy, [301.5634536941064, 294.6754273738092], { uniqueTitle: `GS45` }),
+ new MiscMarker(`KsBG8`, MiscTypes.wallbuy, [294.19030976573237, 289.04240130454195], { uniqueTitle: `ASG-89` }),
+ new MiscMarker(`1bjPY`, MiscTypes.wallbuy, [302.34375, 255.90625], { uniqueTitle: `Tanto .22` }),
+ new MiscMarker(`EeAjA`, MiscTypes.wallbuy, [260.26474908706786, 292.5024709259978], { uniqueTitle: `C9` }),
+ new MiscMarker(`kzPC1`, MiscTypes.wallbuy, [248.8489336765139, 263.518870815491], { uniqueTitle: `Marine-SP` }),
+ new MiscMarker(`HhY0_`, MiscTypes.wallbuy, [213.9061948934098, 253.16855562546598], { uniqueTitle: `Goblin MK2` }),
+ new MiscMarker(`QpYZL`, MiscTypes.wallbuy, [222.14994470956643, 301.70984599036944], { uniqueTitle: `PP-919`, uniqueDesc: `On the ramp up from the docks. Under the bridge from engineering.` }),
+ ],
+ [MapIds.citadelle]: [
+ new MiscMarker(`rOi2C`, MiscTypes.wallbuy, [127.73649367629511, 228.42558032860603], { uniqueTitle: `GS45` }),
+ new MiscMarker(`eVI5z`, MiscTypes.wallbuy, [165.96601156989868, 139.6872831798305], { uniqueTitle: `Kompakt 92` }),
+ new MiscMarker(`N9JkV`, MiscTypes.wallbuy, [205.5005706224356, 285.15195458461994], { uniqueTitle: `XM4` }),
+ new MiscMarker(`tzQO6`, MiscTypes.wallbuy, [222.90325641504634, 188.4240737755952], { uniqueTitle: `LR 7.62` }),
+ new MiscMarker(`l1BrO`, MiscTypes.wallbuy, [273.98949585701473, 230.92895315329292], { uniqueTitle: `AS VAL` }),
+ new MiscMarker(`XHeyD`, MiscTypes.wallbuy, [374.75612089105084, 170.90119089726755], { uniqueTitle: `Marine SP` }),
+ new MiscMarker(`yk4zv`, MiscTypes.wallbuy, [422.86317549059004, 233.27140868730157], { uniqueTitle: `Tanto .22` }),
+ new MiscMarker(`eLJ0c`, MiscTypes.wallbuy, [378.52897328670235, 443.23262884685033], { uniqueTitle: `KSV` }),
+ new MiscMarker(`QkZXh`, MiscTypes.wallbuy, [381.386189260236, 325.7815918407204], { uniqueTitle: `GPMG-7` }),
+ ]
+};
\ No newline at end of file
diff --git a/src/helpers/github.tsx b/src/helpers/github.tsx
index 6f9ca577..8741630c 100644
--- a/src/helpers/github.tsx
+++ b/src/helpers/github.tsx
@@ -1,7 +1,8 @@
import { LatLngExpression, LatLngTuple } from 'leaflet';
import { MapItem, MiscMarker } from '../classes';
+import { MapId } from '../components/MapControls/MapIds';
import { IconFileNames } from '../data/icons';
-import { IntelStore, IntelType, MapIds } from '../data/intel';
+import { IntelStore, IntelType } from '../data/intel';
import { AllMiscStores } from '../data/misc';
import { ContributionTemplates, RepoDomain } from './models';
@@ -96,15 +97,15 @@ export const getIntelById = (intelId: string) => {
export const getMiscMarkerById = (
markerId: string
-): [MapIds, MiscMarker] | null => {
+): [MapId, MiscMarker] | null => {
if (markerId) {
let matchedMiscMarker: MiscMarker | undefined;
- let foundMap: MapIds | undefined;
+ let foundMap: MapId | undefined;
Object.entries(AllMiscStores()).map(([key, miscMarkersForMap]) => {
let matchedMisc = miscMarkersForMap.find(item => item.id === markerId);
if (matchedMisc) {
matchedMiscMarker = matchedMisc;
- foundMap = key as MapIds;
+ foundMap = key as MapId;
return [foundMap, matchedMiscMarker];
}
});
diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx
new file mode 100644
index 00000000..737fe78d
--- /dev/null
+++ b/src/pages/HomePage.tsx
@@ -0,0 +1,269 @@
+import styled from '@emotion/styled';
+import { faDiscord, faGithub } from '@fortawesome/free-brands-svg-icons';
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import CoffeeIcon from '@mui/icons-material/Coffee';
+import { Box, Container, Paper, Typography } from '@mui/material';
+import Grid from '@mui/material/Grid2';
+import React from 'react';
+import { Link } from 'react-router-dom';
+import { MapIds } from '../components/MapControls/MapIds';
+
+const HomePageContainer = styled(Container)`
+ .text-sm {
+ font-size: var(--fs-sm) !important;
+ }
+ .text-base {
+ font-size: var(--fs-base) !important;
+ }
+ .text-md {
+ font-size: var(--fs-md) !important;
+ }
+ .text-lg {
+ font-size: var(--fs-lg) !important;
+ }
+ .text-xl {
+ font-size: var(--fs-xl) !important;
+ }
+ .text-xxl {
+ font-size: var(--fs-xxl) !important;
+ }
+ /* background: var(--clr-bg-lighter); */
+ padding: 20px;
+ border-radius: 8px;
+
+ a {
+ text-decoration: none;
+ }
+ .homepage-box {
+ border-radius: 8px;
+ border: 1px solid;
+ border-color: var(--clr-grey-d);
+ padding: 10px;
+ height: 100%;
+ text-align: center;
+ vertical-align: middle;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ &:hover {
+ background: var(--clr-bg);
+ color: var(--clr-white-d);
+ }
+ }
+
+ .filled {
+ background: var(--clr-bg);
+ color: var(--clr-white-d);
+ }
+
+ .filled-btn {
+ background: var(--clr-bg);
+ color: var(--clr-white-d);
+ &:hover {
+ background: none;
+ color: var(--clr-white-d);
+ }
+ }
+
+ .MuiTypography-h6 {
+ font-size: var(--fs-base);
+ }
+
+ .MuiTypography-body1 {
+ font-size: var(--fs-sm);
+ }
+
+ .MuiTypography-root {
+ color: var(--clr-white-d);
+ }
+
+ .rounded-box {
+ border-radius: 8px;
+ border: 1px solid;
+ border-color: var(--clr-grey-d);
+ padding: 10px;
+ height: 100%;
+ width: 100%;
+ }
+
+ .header-container {
+ margin-bottom: 24px;
+ }
+
+ .title,.main-title {
+ font-weight: 700;
+ align-content: center;
+ text-wrap: pretty;
+ }
+
+ .socials {
+ justify-content: right;
+ align-items: center;
+ }
+
+ //media queries for smaller screens
+ @media (max-width: 600px) {
+ .socials {
+ justify-content: center;
+ align-items: top;
+ margin-bottom: 10px;
+ }
+
+ .header-container {
+ gap: 0;
+ }
+ }
+
+`
+
+const HomePage: React.FC = () => {
+ return (
+
+
+
+
+
+
+ Declassified
+
+
+
+
+
+
+ {' '}
+
+
+ {' '}
+
+
+
+
+
+
+
+
+
+ The #1 interactive map for CoD Zombies.
+ Track Intel and Calling Cards. Discover Main Quest and side Easter Eggs and explore the maps.
+ Always free, no ads, totally open source. Now and forever.
+
+
+ Call of Duty: Black Ops 6
+
+
+
+
+
+ Liberty Falls
+
+
+
+
+
+
+ Terminus
+
+
+
+
+
+
+ Citadelle Des Morts
+
+
+
+
+
+
+ Calling Cards
+ New Version Coming Soon...
+
+
+
+
+
+
+ Nebula Camo Tracker
+ Made by our friends ❤️
+
+
+
+
+
+
+ Call of Duty: Black Ops Cold War
+
+
+
+
+
+ Die Maschine
+
+
+
+
+
+
+ Firebase Z
+
+
+
+
+
+
+ Mauer Der Toten
+
+
+
+
+
+
+ Forsaken
+
+
+
+
+
+
+ Calling Cards
+
+
+
+
+
+
+ Coldwar Camo Tracker
+ Made by our friends ❤️️
+
+
+
+
+
+ );
+};
+
+export default HomePage;
\ No newline at end of file
diff --git a/src/pages/layouts/BaseLayout/index.tsx b/src/pages/layouts/BaseLayout/index.tsx
index 6f06eb23..d43db77f 100644
--- a/src/pages/layouts/BaseLayout/index.tsx
+++ b/src/pages/layouts/BaseLayout/index.tsx
@@ -1,3 +1,4 @@
+import { CssBaseline } from '@mui/material';
import { ThemeProvider, createTheme } from '@mui/material/styles';
import '../../../styles/buttons.css';
import '../../../styles/challenge/cards-alt.css';
@@ -14,8 +15,20 @@ export interface BaseLayoutProps {
export const BaseLayout = ({ children }: BaseLayoutProps) => {
// TODO: Apply and use this properly throughout the app so we can have theme switching
- const theme = createTheme({
+ const defaultTheme = createTheme({
+ // typography: {
+ // fontFamily: [
+ // 'Open Sans',
+ // ].join(','),
+ // },
palette: {
+ background: {
+ default: '#1f2223'
+ },
+ // text: {
+ // primary: '#e3ddd9',
+ // secondary: '#e3ddd9'
+ // },
primary: {
// main: '#3c3c3b'
main: '#b33536'
@@ -39,10 +52,11 @@ export const BaseLayout = ({ children }: BaseLayoutProps) => {
},
}
});
+ // TODO : make light theme
return (
<>
- {/* */}
-
+
+
{children}
>
diff --git a/src/styles/global.css b/src/styles/global.css
index 323e759b..1ddb86ce 100644
--- a/src/styles/global.css
+++ b/src/styles/global.css
@@ -53,6 +53,14 @@ body {
--svg-field: var(--clr-white-d);
--svg-features: var(--clr-grey);
--svg-buildings: var(--clr-grey-d);
+
+ --fs-sm: clamp(0.8rem, 0.17vi + 0.76rem, 0.89rem);
+ --fs-base: clamp(1rem, 0.34vi + 0.91rem, 1.19rem);
+ --fs-md: clamp(1.25rem, 0.61vi + 1.1rem, 1.58rem);
+ --fs-lg: clamp(1.56rem, 1vi + 1.31rem, 2.11rem);
+ --fs-xl: clamp(1.95rem, 1.56vi + 1.56rem, 2.81rem);
+ --fs-xxl: clamp(2.44rem, 2.38vi + 1.85rem, 3.75rem);
+ --fs-xxxl: clamp(3.05rem, 3.54vi + 2.17rem, 5rem);
}
body.dark {
@@ -122,4 +130,4 @@ body.custom-color {
.contributing {
cursor: crosshair !important;
-}
+}
\ No newline at end of file