+ handlePrimary: () => {
+ if (['ct', 'gt'].includes(dungeon.id) && cleared === total) {
+ if (hasDungeonBoss(state, dungeon)) {
+ // reset
+ setState(s => ({
+ ...s,
+ [`${dungeon.id}-checks`]: 0,
+ [`${dungeon.id}-boss-defeated`]: false,
+ }));
+ } else {
+ setState(toggleBoolean(`${dungeon.id}-boss-defeated`));
+ }
+ } else {
+ setState(increment(`${dungeon.id}-checks`, total));
+ }
+ },
+ handleSecondary: () => {
+ if (['ct', 'gt'].includes(dungeon.id) &&
+ (hasDungeonBoss(state, dungeon) || !cleared)
+ ) {
+ if (hasDungeonBoss(state, dungeon)) {
+ setState(toggleBoolean(`${dungeon.id}-boss-defeated`));
+ } else {
+ setState(s => ({
+ ...s,
+ [`${dungeon.id}-checks`]: total,
+ [`${dungeon.id}-boss-defeated`]: true,
+ }));
+ }
+ } else {
+ setState(decrement(`${dungeon.id}-checks`, total));
+ }
+ },