This repository has been archived on 2024-03-13. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
timekeeper/pages/Missions.vue
John McCardle 128387bede feat: refining prestige mechanics
apprentices are reset to zero on prestige.
Repeatable missions are reset when prestiging (namely the repeatable prestige quest, so, infinite loop now available)
reinstated Time Travel Precision, an upgrade to prestige to your childhood self instead of adult self.
2022-01-14 21:38:19 -05:00

110 lines
3.3 KiB
Vue

<template>
<div class="missions grid">
<responsive-grid v-if="incomplete.length">
<mission-button
v-for="(mission, index) in incomplete"
:key="index"
:mission="mission"
@click="complete(mission)"
/>
</responsive-grid>
<div v-else>
<h3 class="text-center">No Missions Currently Available</h3>
</div>
<template v-if="completed.length">
<h2 class="pb-2 pt-8 md:pb-4 font-semibold text-center text-xl">
Completed Missions
</h2>
<responsive-grid min="1" mid="3" max="6">
<completed-mission
v-for="(mission, index) in completed"
:key="index"
:mission="mission"
/>
</responsive-grid>
</template>
</div>
</template>
<script>
export default {
computed: {
unlocked() {
return this.$store.state.missions.filter(({ unlockCriteria }) => {
if (unlockCriteria.unit === 'instruments') {
return unlockCriteria.value <= this.$store.getters.instruments
} else if (unlockCriteria.unit === 'apprenticeLevels') {
return unlockCriteria.value <= this.$store.getters.apprenticeLevels
} else if (unlockCriteria.unit === 'missionsCompleted') {
return unlockCriteria.value.every((name) =>
this.$store.getters.missionIsCompleted(name)
)
} else if (unlockCriteria.unit === 'eraVisited') {
return this.$store.state.processes.find(
(p) => p.unlockEra === unlockCriteria.value
).visited
} else if (unlockCriteria.unit === 'timeJumpsBackwards') {
return unlockCriteria.value <= this.$store.state.timeJumpsBackwards
} else {
return false
}
})
},
incomplete() {
return this.unlocked.filter((m) => !m.complete)
},
completed() {
return this.unlocked.filter((m) => m.complete)
},
},
methods: {
complete(mission) {
this.$store.commit('completeMission', mission.name)
if (mission.completionCriteria.unit === 'spareTime') {
this.$store.commit('spendCurrency', mission.completionCriteria.value)
}
if (mission.name === 'Study Time Magic') {
this.$store.commit('unlockTab', 'Time Magic')
}
if (mission.name === 'Create the Time Machine') {
this.$store.commit('unlockTab', 'Time Machine')
}
if (
mission.name === 'Time to Cheat Death' ||
mission.name === 'Cheat Death... Again'
) {
this.$store.commit('unlockTab', 'Wisdom')
// this.$store.commit('setPlayerAge', { year: 30 })
// this.$store.commit('timeTravel', { year: 1400, era: 'Early Modern' })
// this.$store.commit('tickLifetime')
// this.$store.commit('spendCurrency', this.$store.state.currency)
this.$store.commit('doPrestige')
this.$store.commit('startGame')
const message =
'You are young-ish once again and back in the year 1400 with all your wisdom intact.' +
'<br><br>' +
'Continue to explore the eras and unlock the secrets of time.'
this.$store.commit('openModal', message)
}
if (mission.name === 'Live Forever') {
this.$store.commit('unlockPhilosophersStone')
}
},
},
}
</script>
<style scoped>
.missions {
grid-template-rows: minmax(0, 1fr) auto auto;
}
</style>