</Form.Select>
</Form.Group>
</Col>
+ <Col sm={6}>
+ <h3>{t('tracker.config.calculation')}</h3>
+ <Form.Group
+ className="d-flex justify-content-between my-2"
+ controlId="tracker.checkCalculation"
+ >
+ <Form.Label>{t('tracker.config.checkCalculation')}</Form.Label>
+ <Form.Select
+ className="w-auto"
+ name="checkCalculation"
+ onChange={handleChange}
+ value={getConfigValue(config, 'checkCalculation', 'room-data')}
+ >
+ {['inventory', 'room-data'].map(n =>
+ <option key={n} value={n}>
+ {t(`tracker.config.checkCalculations.${n}`)}
+ </option>
+ )}
+ </Form.Select>
+ </Form.Group>
+ </Col>
</Row>
</Modal.Body>
</Modal>;
RANDO_POWDER: 0x4C,
RANDO_FLUTE: 0x4C,
RANDO_BOW: 0x4E,
+ RANDO_CHECKS_START: 0x180,
+ RANDO_CHECKS_END: 0x18F,
RANDO_KEY_START: 0x1A0,
RANDO_KEY_END: 0x1AF,
};
export const CONFIG = {
bossShuffle: false,
+ checkCalculation: 'room-data',
glitches: 'none',
mapLayout: 'horizontal',
showMap: 'situational',
state[`${dungeon.id}-compass`] = !!(compass & dungeon.mask);
state[`${dungeon.id}-small-key`] = data[INV_ADDR.RANDO_KEY_START + dungeon.offset];
state[`${dungeon.id}-big-key`] = !!(bigKey & dungeon.mask);
+ state[`${dungeon.id}-checks-collected`] =
+ data[INV_ADDR.RANDO_CHECKS_START + dungeon.offset];
if (dungeon.prize) {
const isCrystal = prizeMap[dungeon.offset].isCrystal;
const prizeFlags = data[isCrystal ? INV_ADDR.CRYSTALS : INV_ADDR.PENDANTS];
DUNGEONS.forEach(dungeon => {
let amount = 0;
let total = dungeon.checks.length;
- dungeon.checks.forEach(check => {
- if (state[check]) {
- ++amount;
- }
- });
+ if (config.checkCalculation === 'inventory') {
+ amount = state[`${dungeon.id}-checks-collected`];
+ } else {
+ dungeon.checks.forEach(check => {
+ if (state[check]) {
+ ++amount;
+ }
+ });
+ }
if (!config.wildMap && state[`${dungeon.id}-map`]) {
--amount;
--total;
tracker: {
config: {
bossShuffle: 'Boss Shuffle',
+ calculation: 'Berechnung',
+ checkCalculation: 'Dungeon Checks',
+ checkCalculations: {
+ inventory: 'Inventar (Doors)',
+ 'room-data': 'Raumdaten (Glitched)',
+ },
ganonCrystals: 'Ganon Crystals',
glitches: 'Glitches',
glitchRules: {
tracker: {
config: {
bossShuffle: 'Boss Shuffle',
+ calculation: 'Calculation',
+ checkCalculation: 'Dungeon checks',
+ checkCalculations: {
+ inventory: 'Inventory (Doors)',
+ 'room-data': 'Room data (glitched)',
+ },
ganonCrystals: 'Ganon Crystals',
glitches: 'Glitches',
glitchRules: {