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: [],