diff --git a/package.json b/package.json index 8ae316f..72c5916 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gooboo", - "version": "1.5.2", + "version": "1.5.3", "description": "An idle game", "author": "Tendsty", "main": "main.js", diff --git a/public/version.txt b/public/version.txt index 4cda8f1..8af85be 100644 --- a/public/version.txt +++ b/public/version.txt @@ -1 +1 @@ -1.5.2 +1.5.3 diff --git a/src/components/partial/village/CraftingList.vue b/src/components/partial/village/CraftingList.vue index d5dc962..daa251b 100644 --- a/src/components/partial/village/CraftingList.vue +++ b/src/components/partial/village/CraftingList.vue @@ -94,19 +94,19 @@ @click="toggleSelling" :disabled="isFrozen || !craftObj.isSelling && currentCounter >= maxCounter" >{{ craftObj.isSelling ? 'mdi-currency-usd' : 'mdi-currency-usd-off' }} - -
Sell 1 every ~{{ $formatTime(Math.round(1 / Math.min(craftObj.cacheSellChance, 1))) }}
+ +
{{ $vuetify.lang.t('$vuetify.village.crafting.sellEvery', $formatTime(Math.round(1 / Math.min(craftObj.cacheSellChance, 1)))) }}
- {{ craftObj.crafted }} / {{ currentMilestone.needed }} crafts: - {{ $vuetify.lang.t(`$vuetify.village.crafting.changeStat.${ currentMilestone.name }`, currentMilestone.name === 'timeNeeded' ? $formatTime(currentMilestone.value) : $formatNum(currentMilestone.value)) }} - + {{ $vuetify.lang.t('$vuetify.village.crafting.crafts', $formatNum(craftObj.crafted), $formatNum(currentMilestone.needed)) }}: + {{ $vuetify.lang.t(`$vuetify.village.crafting.changeStat.${ currentMilestone.name }`, currentMilestone.name === 'timeNeeded' ? $formatTime(currentMilestone.value) : $formatNum(currentMilestone.value)) }} +
{{ $vuetify.lang.t('$vuetify.village.crafting.nextEffect') }}:
- +
diff --git a/src/js/modules/meta.js b/src/js/modules/meta.js index c64993e..c632443 100644 --- a/src/js/modules/meta.js +++ b/src/js/modules/meta.js @@ -22,6 +22,7 @@ import v1_5_0 from "./patchnote/v1_5_0"; import v1_4_2 from "./patchnote/v1_4_2"; import v1_5_1 from "./patchnote/v1_5_1"; import v1_5_2 from "./patchnote/v1_5_2"; +import v1_5_3 from "./patchnote/v1_5_3"; export default { name: 'meta', @@ -57,6 +58,7 @@ export default { store.commit('system/initTheme', {name: key, ...elem}); } for (const [key, elem] of Object.entries({ + '1.5.3': v1_5_3, '1.5.2': v1_5_2, '1.5.1': v1_5_1, '1.5.0': v1_5_0, diff --git a/src/js/modules/migration/v1_5_3.js b/src/js/modules/migration/v1_5_3.js new file mode 100644 index 0000000..100da33 --- /dev/null +++ b/src/js/modules/migration/v1_5_3.js @@ -0,0 +1,73 @@ +import { deltaLinear } from "../../utils/math"; +import { replaceTreasureEffect } from "./helper"; + +export default function(save) { + // Repeat offering respec for bugged savefiles + if (save.village && save.village.offering) { + let spent = 0; + let spentWithoutT4 = 0; + ['plantFiber', 'wood', 'stone'].forEach(elem => { + if (save.village.offering[elem] !== undefined) { + spent += save.village.offering[elem][1]; + spentWithoutT4 += save.village.offering[elem][1]; + } + }); + ['coin', 'metal', 'water'].forEach(elem => { + if (save.village.offering[elem] !== undefined) { + spent += save.village.offering[elem][1] * 3; + spentWithoutT4 += save.village.offering[elem][1] * 3; + } + }); + ['glass', 'hardwood', 'gem'].forEach(elem => { + if (save.village.offering[elem] !== undefined) { + spent += save.village.offering[elem][1] * 8; + spentWithoutT4 += save.village.offering[elem][1] * 8; + } + }); + ['knowledge', 'science', 'joy'].forEach(elem => { + if (save.village.offering[elem] !== undefined) { + spent += deltaLinear(20, 1, save.village.offering[elem][1]); + } + }); + let missing = save.stat.village_offering[1] - spent; + if (missing < 0) { + // Reset T4 offerings only if you do not have enough offerings to pay for them + if (save.village.offering.knowledge !== undefined) { + save.village.offering.knowledge[1] = 0; + } + if (save.village.offering.science !== undefined) { + save.village.offering.science[1] = 0; + } + if (save.village.offering.joy !== undefined) { + save.village.offering.joy[1] = 0; + } + missing = save.stat.village_offering[1] - spentWithoutT4; + } + save.currency.village_offering = missing; + } + + // Fix event shops selling old treasure effect + if (save.event && save.event.shop_merchant) { + for (const [key, elem] of Object.entries(save.event.shop_merchant)) { + if (elem.data && elem.data.effect) { + const index = elem.data.effect.indexOf("currencyFarmFruitGain"); + if (index !== -1) { + save.event.shop_merchant[key].data.effect[index] = "currencyFarmBerryGain"; + } + } + } + } + if (save.event && save.event.shop_big) { + for (const [key, elem] of Object.entries(save.event.shop_big)) { + if (elem.data && elem.data.effect) { + const index = elem.data.effect.indexOf("currencyFarmFruitGain"); + if (index !== -1) { + save.event.shop_big[key].data.effect[index] = "currencyFarmBerryGain"; + } + } + } + } + save = replaceTreasureEffect(save, 'currencyFarmFruitGain', 'currencyFarmBerryGain'); + + return save; +} diff --git a/src/js/modules/patchnote/v1_5_3.js b/src/js/modules/patchnote/v1_5_3.js new file mode 100644 index 0000000..e14addf --- /dev/null +++ b/src/js/modules/patchnote/v1_5_3.js @@ -0,0 +1,24 @@ +export default { + day: '2024-09-29', + content: { + village: [ + { + unlock: 'villageOffering1', + type: 'bugfix', + text: '396' + } + ], + event: [ + { + type: 'bugfix', + text: '397' + } + ], + village_1: [ + { + type: 'bugfix', + text: '398' + } + ] + } +} diff --git a/src/js/savefile.js b/src/js/savefile.js index 868ce8d..21b33ff 100644 --- a/src/js/savefile.js +++ b/src/js/savefile.js @@ -26,17 +26,19 @@ import v1_4_1 from "./modules/migration/v1_4_1"; import { simpleHash } from "./utils/random"; import v1_5_0 from "./modules/migration/v1_5_0"; import v1_5_1 from "./modules/migration/v1_5_1"; +import v1_5_3 from "./modules/migration/v1_5_3"; const migrations = { - '1.5.1': v1_5_1, - '1.5.0': v1_5_0, - '1.4.1': v1_4_1, - '1.4.0': v1_4_0, - '1.3.5': v1_3_5, - '1.3.4': v1_3_4, - '1.3.0': v1_3_0, + '1.1.0': v1_1_0, '1.1.2': v1_1_2, - '1.1.0': v1_1_0 + '1.3.0': v1_3_0, + '1.3.4': v1_3_4, + '1.3.5': v1_3_5, + '1.4.0': v1_4_0, + '1.4.1': v1_4_1, + '1.5.0': v1_5_0, + '1.5.1': v1_5_1, + '1.5.3': v1_5_3, }; export { checkLocal, saveLocal, loadFile, exportFile, cleanStore, getSavefile, getSavefileName, encodeFile, decodeFile } diff --git a/src/lang/de.js b/src/lang/de.js index 2267f00..d6af6b2 100644 --- a/src/lang/de.js +++ b/src/lang/de.js @@ -1447,6 +1447,9 @@ export default { special: { description: 'Spezielle Gegenstände bieten permanente Effekte, wenn sie hergestellt werden und der Fortschritt wird beim Prestige nicht zurückgesetzt. Deren Kosten steigt mit jeder Herstellung und sie haben keine Meilensteine' }, + crafts: '{0} / {1} hergestellt', + sellEvery: 'Verkaufe 1 alle ~{0}', + sellPrice: 'Verkaufspreis (Wert: {0})', rope: 'Seil', woodenPlanks: 'Holzbretter', brick: 'Ziegel', diff --git a/src/lang/de/patchnote.js b/src/lang/de/patchnote.js index ca146ad..2afcf32 100644 --- a/src/lang/de/patchnote.js +++ b/src/lang/de/patchnote.js @@ -480,6 +480,11 @@ export default { // v1.5.2 395: 'Konverter-Kapazität pro "Mülleimer"-Stufe', + + // v1.5.3 + 396: 'Ein Fehler wurde behoben, bei dem Opfergaben nicht mehr funktionieren, wenn man gewisse Versionen überspringt', + 397: 'Eventschätze werden jetzt korrekt im Shop angezeigt', + 398: 'Ein Fehler wurde behoben, wo manche Meilensteine die falsche Belohnung angezeigt haben', }, v: { 1: { diff --git a/src/lang/en.js b/src/lang/en.js index 4e2c90d..eab7e59 100644 --- a/src/lang/en.js +++ b/src/lang/en.js @@ -1447,6 +1447,9 @@ export default { special: { description: 'Special crafts provide permanent bonuses when crafted and their progress does not reset on prestige. Their cost increases with every craft and they do not have milestones' }, + crafts: '{0} / {1} crafts', + sellEvery: 'Sell 1 every ~{0}', + sellPrice: 'Sell price (Value: {0})', rope: 'Rope', woodenPlanks: 'Wooden planks', brick: 'Brick', diff --git a/src/lang/en/patchnote.js b/src/lang/en/patchnote.js index bf81b17..ea1c2c1 100644 --- a/src/lang/en/patchnote.js +++ b/src/lang/en/patchnote.js @@ -480,6 +480,11 @@ export default { // v1.5.2 395: 'Converter capacity per level of "Trash can"', + + // v1.5.3 + 396: 'Fixed a bug with offerings breaking when updating multiple versions at once', + 397: 'Bugged treasures from event rewards are now displayed correctly', + 398: 'Fixed a bug where crafting milestones displayed the wrong rewards', }, v: { 1: { diff --git a/src/store/system.js b/src/store/system.js index 58f7c3f..2a1f7e7 100644 --- a/src/store/system.js +++ b/src/store/system.js @@ -7,7 +7,7 @@ import { LOCAL_STORAGE_NAME } from "../js/constants"; export default { namespaced: true, state: { - version: '1.5.2', + version: '1.5.3', cheaterSelfMark: 0, cheatDetected: {}, lastPlayedDays: [],