From 1914e445e736884cd3b6f358656f9890af4c90fb Mon Sep 17 00:00:00 2001 From: Mees Buschman Date: Wed, 11 Sep 2024 17:13:58 +0200 Subject: [PATCH] Elite ants --- .eslintcache | 2 +- src/stores/gameStore.ts | 35 ++++++++++++++- src/stores/prestigeStore.ts | 79 ++++++++++++++++++++++++++++----- src/views/AntResources.vue | 51 ++++++++++++++++++++- src/views/PrestigeShop.vue | 88 +++++++++++++++++++++---------------- 5 files changed, 204 insertions(+), 51 deletions(-) diff --git a/.eslintcache b/.eslintcache index d7b144b..a0a9811 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"C:\\Development\\IdleViteVue\\.eslintrc.js":"1","C:\\Development\\IdleViteVue\\postcss.config.js":"2","C:\\Development\\IdleViteVue\\tailwind.config.js":"3","C:\\Development\\IdleViteVue\\vite.config.js":"4","C:\\Development\\IdleViteVue\\src\\App.vue":"5","C:\\Development\\IdleViteVue\\src\\main.ts":"6","C:\\Development\\IdleViteVue\\src\\routes.ts":"7","C:\\Development\\IdleViteVue\\src\\shims-vue.d.ts":"8","C:\\Development\\IdleViteVue\\src\\store.ts":"9","C:\\Development\\IdleViteVue\\src\\components\\AntSimulation.vue":"10","C:\\Development\\IdleViteVue\\src\\views\\Adventure.vue":"11","C:\\Development\\IdleViteVue\\src\\views\\AntResources.vue":"12","C:\\Development\\IdleViteVue\\src\\views\\Home.vue":"13","C:\\Development\\IdleViteVue\\src\\views\\NotFound.vue":"14","C:\\Development\\IdleViteVue\\src\\stores\\adventureStore.ts":"15","C:\\Development\\IdleViteVue\\src\\stores\\gameStore.ts":"16","C:\\Development\\IdleViteVue\\src\\views\\Debugger.vue":"17","C:\\Development\\IdleViteVue\\src\\views\\Inventory.vue":"18","C:\\Development\\IdleViteVue\\src\\stores\\inventoryStore.ts":"19","C:\\Development\\IdleViteVue\\src\\components\\InventoryItem.vue":"20","C:\\Development\\IdleViteVue\\src\\types\\itemRegistry.ts":"21","C:\\Development\\IdleViteVue\\src\\firebase.ts":"22","C:\\Development\\IdleViteVue\\src\\components\\Modal.vue":"23","C:\\Development\\IdleViteVue\\src\\views\\PrestigeShop.vue":"24","C:\\Development\\IdleViteVue\\src\\views\\Settings.vue":"25","C:\\Development\\IdleViteVue\\src\\stores\\prestigeStore.ts":"26"},{"size":758,"mtime":1725657576729},{"size":83,"mtime":1725657576792},{"size":726,"mtime":1725826628130},{"size":177,"mtime":1725657576822},{"size":83,"mtime":1725657506695,"results":"27","hashOfConfig":"28"},{"size":1843,"mtime":1725898066056,"results":"29","hashOfConfig":"28"},{"size":272,"mtime":1725660566335,"results":"30","hashOfConfig":"28"},{"size":120,"mtime":1725474178300,"results":"31","hashOfConfig":"28"},{"size":90,"mtime":1725474178300,"results":"32","hashOfConfig":"28"},{"size":14778,"mtime":1725824992912,"results":"33","hashOfConfig":"28"},{"size":4523,"mtime":1725981855871,"results":"34","hashOfConfig":"28"},{"size":14557,"mtime":1725910395274,"results":"35","hashOfConfig":"28"},{"size":12608,"mtime":1725985763851,"results":"36","hashOfConfig":"28"},{"size":436,"mtime":1725474178301,"results":"37","hashOfConfig":"28"},{"size":18411,"mtime":1725987396788,"results":"38","hashOfConfig":"28"},{"size":23921,"mtime":1725987496709,"results":"39","hashOfConfig":"28"},{"size":3251,"mtime":1725899290112,"results":"40","hashOfConfig":"28"},{"size":5723,"mtime":1725987645837,"results":"41","hashOfConfig":"28"},{"size":6377,"mtime":1725987624231,"results":"42","hashOfConfig":"28"},{"size":1014,"mtime":1725986809266,"results":"43","hashOfConfig":"28"},{"size":4070,"mtime":1725900842399,"results":"44","hashOfConfig":"28"},{"size":1173,"mtime":1725903219799,"results":"45","hashOfConfig":"28"},{"size":1290,"mtime":1725801294724},{"size":5672,"mtime":1725895682524},{"size":1423,"mtime":1725824134747},{"size":11069,"mtime":1725983656715,"results":"46","hashOfConfig":"28"},{"filePath":"47","messages":"48","suppressedMessages":"49","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"adzkch",{"filePath":"50","messages":"51","suppressedMessages":"52","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"53","messages":"54","suppressedMessages":"55","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"56","messages":"57","suppressedMessages":"58","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"59","messages":"60","suppressedMessages":"61","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"62","messages":"63","suppressedMessages":"64","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"65","messages":"66","suppressedMessages":"67","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"68","messages":"69","suppressedMessages":"70","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"71","messages":"72","suppressedMessages":"73","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"74","messages":"75","suppressedMessages":"76","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"77","messages":"78","suppressedMessages":"79","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"80","messages":"81","suppressedMessages":"82","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"83","messages":"84","suppressedMessages":"85","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"86","messages":"87","suppressedMessages":"88","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"89","messages":"90","suppressedMessages":"91","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"92","messages":"93","suppressedMessages":"94","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"95","messages":"96","suppressedMessages":"97","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"98","messages":"99","suppressedMessages":"100","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"101","messages":"102","suppressedMessages":"103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Development\\IdleViteVue\\src\\App.vue",[],[],"C:\\Development\\IdleViteVue\\src\\main.ts",[],[],"C:\\Development\\IdleViteVue\\src\\routes.ts",[],[],"C:\\Development\\IdleViteVue\\src\\shims-vue.d.ts",[],[],"C:\\Development\\IdleViteVue\\src\\store.ts",[],[],"C:\\Development\\IdleViteVue\\src\\components\\AntSimulation.vue",["104","105","106","107","108","109","110","111","112"],[],"C:\\Development\\IdleViteVue\\src\\views\\Adventure.vue",[],[],"C:\\Development\\IdleViteVue\\src\\views\\AntResources.vue",["113","114"],[],"C:\\Development\\IdleViteVue\\src\\views\\Home.vue",[],[],"C:\\Development\\IdleViteVue\\src\\views\\NotFound.vue",[],[],"C:\\Development\\IdleViteVue\\src\\stores\\adventureStore.ts",[],[],"C:\\Development\\IdleViteVue\\src\\stores\\gameStore.ts",["115","116"],[],"C:\\Development\\IdleViteVue\\src\\views\\Debugger.vue",[],[],"C:\\Development\\IdleViteVue\\src\\views\\Inventory.vue",["117","118"],[],"C:\\Development\\IdleViteVue\\src\\stores\\inventoryStore.ts",[],[],"C:\\Development\\IdleViteVue\\src\\components\\InventoryItem.vue",["119"],[],"C:\\Development\\IdleViteVue\\src\\types\\itemRegistry.ts",[],[],"C:\\Development\\IdleViteVue\\src\\firebase.ts",["120","121","122"],[],"C:\\Development\\IdleViteVue\\src\\stores\\prestigeStore.ts",[],[],{"ruleId":"123","severity":1,"message":"124","line":252,"column":49,"nodeType":"125","messageId":"126","endLine":252,"endColumn":62,"suggestions":"127"},{"ruleId":"123","severity":1,"message":"124","line":254,"column":62,"nodeType":"125","messageId":"126","endLine":254,"endColumn":75,"suggestions":"128"},{"ruleId":"123","severity":1,"message":"124","line":256,"column":49,"nodeType":"125","messageId":"126","endLine":256,"endColumn":62,"suggestions":"129"},{"ruleId":"123","severity":1,"message":"124","line":258,"column":62,"nodeType":"125","messageId":"126","endLine":258,"endColumn":75,"suggestions":"130"},{"ruleId":"123","severity":1,"message":"124","line":281,"column":3,"nodeType":"125","messageId":"126","endLine":281,"endColumn":13,"suggestions":"131"},{"ruleId":"123","severity":1,"message":"124","line":294,"column":3,"nodeType":"125","messageId":"126","endLine":294,"endColumn":13,"suggestions":"132"},{"ruleId":"123","severity":1,"message":"124","line":295,"column":3,"nodeType":"125","messageId":"126","endLine":295,"endColumn":13,"suggestions":"133"},{"ruleId":"123","severity":1,"message":"124","line":295,"column":29,"nodeType":"125","messageId":"126","endLine":295,"endColumn":42,"suggestions":"134"},{"ruleId":"123","severity":1,"message":"124","line":295,"column":50,"nodeType":"125","messageId":"126","endLine":295,"endColumn":63,"suggestions":"135"},{"ruleId":"136","severity":1,"message":"137","line":313,"column":9,"nodeType":"138","messageId":"139","endLine":313,"endColumn":12},{"ruleId":"136","severity":1,"message":"140","line":314,"column":8,"nodeType":"138","messageId":"139","endLine":314,"endColumn":13},{"ruleId":"136","severity":1,"message":"141","line":165,"column":17,"nodeType":"138","messageId":"139","endLine":165,"endColumn":30},{"ruleId":"136","severity":1,"message":"142","line":356,"column":15,"nodeType":"138","messageId":"139","endLine":356,"endColumn":25},{"ruleId":"136","severity":1,"message":"143","line":71,"column":15,"nodeType":"138","messageId":"139","endLine":71,"endColumn":21},{"ruleId":"144","severity":1,"message":"145","line":110,"column":18,"nodeType":"146","messageId":"147","endLine":110,"endColumn":21,"suggestions":"148"},{"ruleId":"136","severity":1,"message":"149","line":22,"column":9,"nodeType":"138","messageId":"139","endLine":22,"endColumn":17},{"ruleId":"136","severity":1,"message":"150","line":2,"column":24,"nodeType":"138","messageId":"139","endLine":2,"endColumn":34},{"ruleId":"136","severity":1,"message":"151","line":4,"column":10,"nodeType":"138","messageId":"139","endLine":4,"endColumn":28},{"ruleId":"136","severity":1,"message":"152","line":4,"column":30,"nodeType":"138","messageId":"139","endLine":4,"endColumn":49},"@typescript-eslint/no-non-null-assertion","Forbidden non-null assertion.","TSNonNullExpression","noNonNull",["153"],["154"],["155"],["156"],["157"],["158"],["159"],["160"],["161"],"@typescript-eslint/no-unused-vars","'ref' is defined but never used.","Identifier","unusedVar","'Modal' is defined but never used.","'prestigeStore' is assigned a value but never used.","'credential' is assigned a value but never used.","'height' is assigned a value but never used.","@typescript-eslint/no-explicit-any","Unexpected any. Specify a different type.","TSAnyKeyword","unexpectedAny",["162","163"],"'useToast' is defined but never used.","'collection' is defined but never used.","'initializeAppCheck' is defined but never used.","'ReCaptchaV3Provider' is defined but never used.",{"messageId":"164","fix":"165","desc":"166"},{"messageId":"164","fix":"167","desc":"166"},{"messageId":"164","fix":"168","desc":"166"},{"messageId":"164","fix":"169","desc":"166"},{"messageId":"164","fix":"170","desc":"166"},{"messageId":"164","fix":"171","desc":"166"},{"messageId":"164","fix":"172","desc":"166"},{"messageId":"164","fix":"173","desc":"166"},{"messageId":"164","fix":"174","desc":"166"},{"messageId":"175","fix":"176","desc":"177"},{"messageId":"178","fix":"179","desc":"180"},"suggestOptionalChain",{"range":"181","text":"182"},"Consider using the optional chain operator `?.` instead. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator.",{"range":"183","text":"182"},{"range":"184","text":"182"},{"range":"185","text":"182"},{"range":"186","text":"182"},{"range":"187","text":"182"},{"range":"188","text":"182"},{"range":"189","text":"182"},{"range":"190","text":"182"},"suggestUnknown",{"range":"191","text":"192"},"Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.","suggestNever",{"range":"191","text":"193"},"Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.",[8615,8616],"?",[8758,8759],[8853,8854],[8992,8993],[9678,9679],[10057,10058],[10112,10113],[10141,10142],[10162,10163],[3553,3556],"unknown","never"] \ No newline at end of file +[{"C:\\Development\\IdleViteVue\\.eslintrc.js":"1","C:\\Development\\IdleViteVue\\postcss.config.js":"2","C:\\Development\\IdleViteVue\\tailwind.config.js":"3","C:\\Development\\IdleViteVue\\vite.config.js":"4","C:\\Development\\IdleViteVue\\src\\App.vue":"5","C:\\Development\\IdleViteVue\\src\\main.ts":"6","C:\\Development\\IdleViteVue\\src\\routes.ts":"7","C:\\Development\\IdleViteVue\\src\\shims-vue.d.ts":"8","C:\\Development\\IdleViteVue\\src\\store.ts":"9","C:\\Development\\IdleViteVue\\src\\components\\AntSimulation.vue":"10","C:\\Development\\IdleViteVue\\src\\views\\Adventure.vue":"11","C:\\Development\\IdleViteVue\\src\\views\\AntResources.vue":"12","C:\\Development\\IdleViteVue\\src\\views\\Home.vue":"13","C:\\Development\\IdleViteVue\\src\\views\\NotFound.vue":"14","C:\\Development\\IdleViteVue\\src\\stores\\adventureStore.ts":"15","C:\\Development\\IdleViteVue\\src\\stores\\gameStore.ts":"16","C:\\Development\\IdleViteVue\\src\\views\\Debugger.vue":"17","C:\\Development\\IdleViteVue\\src\\views\\Inventory.vue":"18","C:\\Development\\IdleViteVue\\src\\stores\\inventoryStore.ts":"19","C:\\Development\\IdleViteVue\\src\\components\\InventoryItem.vue":"20","C:\\Development\\IdleViteVue\\src\\types\\itemRegistry.ts":"21","C:\\Development\\IdleViteVue\\src\\firebase.ts":"22","C:\\Development\\IdleViteVue\\src\\components\\Modal.vue":"23","C:\\Development\\IdleViteVue\\src\\views\\PrestigeShop.vue":"24","C:\\Development\\IdleViteVue\\src\\views\\Settings.vue":"25","C:\\Development\\IdleViteVue\\src\\stores\\prestigeStore.ts":"26"},{"size":758,"mtime":1725657576729},{"size":83,"mtime":1725657576792},{"size":726,"mtime":1725826628130},{"size":177,"mtime":1725657576822},{"size":83,"mtime":1725657506695,"results":"27","hashOfConfig":"28"},{"size":1843,"mtime":1725898066056,"results":"29","hashOfConfig":"28"},{"size":272,"mtime":1725660566335,"results":"30","hashOfConfig":"28"},{"size":120,"mtime":1725474178300,"results":"31","hashOfConfig":"28"},{"size":90,"mtime":1725474178300,"results":"32","hashOfConfig":"28"},{"size":14778,"mtime":1725824992912,"results":"33","hashOfConfig":"28"},{"size":4523,"mtime":1725981855871,"results":"34","hashOfConfig":"28"},{"size":14626,"mtime":1726061889001,"results":"35","hashOfConfig":"28"},{"size":12638,"mtime":1726058787031,"results":"36","hashOfConfig":"28"},{"size":436,"mtime":1725474178301,"results":"37","hashOfConfig":"28"},{"size":18620,"mtime":1726059122921,"results":"38","hashOfConfig":"28"},{"size":25214,"mtime":1726061943882,"results":"39","hashOfConfig":"28"},{"size":4051,"mtime":1726063245524,"results":"40","hashOfConfig":"28"},{"size":6359,"mtime":1726062914087,"results":"41","hashOfConfig":"28"},{"size":6377,"mtime":1725987624231,"results":"42","hashOfConfig":"28"},{"size":1434,"mtime":1726063071378,"results":"43","hashOfConfig":"28"},{"size":4066,"mtime":1726063372838,"results":"44","hashOfConfig":"28"},{"size":1173,"mtime":1725903219799,"results":"45","hashOfConfig":"28"},{"size":1290,"mtime":1725801294724},{"size":6785,"mtime":1726062018255},{"size":1423,"mtime":1725824134747},{"size":11402,"mtime":1726059547657,"results":"46","hashOfConfig":"28"},{"filePath":"47","messages":"48","suppressedMessages":"49","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"adzkch",{"filePath":"50","messages":"51","suppressedMessages":"52","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"53","messages":"54","suppressedMessages":"55","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"56","messages":"57","suppressedMessages":"58","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"59","messages":"60","suppressedMessages":"61","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"62","messages":"63","suppressedMessages":"64","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"65","messages":"66","suppressedMessages":"67","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"68","messages":"69","suppressedMessages":"70","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"71","messages":"72","suppressedMessages":"73","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"74","messages":"75","suppressedMessages":"76","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"77","messages":"78","suppressedMessages":"79","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"80","messages":"81","suppressedMessages":"82","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"83","messages":"84","suppressedMessages":"85","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"86","messages":"87","suppressedMessages":"88","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"89","messages":"90","suppressedMessages":"91","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"92","messages":"93","suppressedMessages":"94","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"95","messages":"96","suppressedMessages":"97","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"98","messages":"99","suppressedMessages":"100","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"101","messages":"102","suppressedMessages":"103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Development\\IdleViteVue\\src\\App.vue",[],[],"C:\\Development\\IdleViteVue\\src\\main.ts",[],[],"C:\\Development\\IdleViteVue\\src\\routes.ts",[],[],"C:\\Development\\IdleViteVue\\src\\shims-vue.d.ts",[],[],"C:\\Development\\IdleViteVue\\src\\store.ts",[],[],"C:\\Development\\IdleViteVue\\src\\components\\AntSimulation.vue",["104","105","106","107","108","109","110","111","112"],[],"C:\\Development\\IdleViteVue\\src\\views\\Adventure.vue",[],[],"C:\\Development\\IdleViteVue\\src\\views\\AntResources.vue",["113","114"],[],"C:\\Development\\IdleViteVue\\src\\views\\Home.vue",[],[],"C:\\Development\\IdleViteVue\\src\\views\\NotFound.vue",[],[],"C:\\Development\\IdleViteVue\\src\\stores\\adventureStore.ts",[],[],"C:\\Development\\IdleViteVue\\src\\stores\\gameStore.ts",["115","116"],[],"C:\\Development\\IdleViteVue\\src\\views\\Debugger.vue",[],[],"C:\\Development\\IdleViteVue\\src\\views\\Inventory.vue",["117","118"],[],"C:\\Development\\IdleViteVue\\src\\stores\\inventoryStore.ts",[],[],"C:\\Development\\IdleViteVue\\src\\components\\InventoryItem.vue",["119"],[],"C:\\Development\\IdleViteVue\\src\\types\\itemRegistry.ts",[],[],"C:\\Development\\IdleViteVue\\src\\firebase.ts",["120","121","122"],[],"C:\\Development\\IdleViteVue\\src\\stores\\prestigeStore.ts",[],[],{"ruleId":"123","severity":1,"message":"124","line":252,"column":49,"nodeType":"125","messageId":"126","endLine":252,"endColumn":62,"suggestions":"127"},{"ruleId":"123","severity":1,"message":"124","line":254,"column":62,"nodeType":"125","messageId":"126","endLine":254,"endColumn":75,"suggestions":"128"},{"ruleId":"123","severity":1,"message":"124","line":256,"column":49,"nodeType":"125","messageId":"126","endLine":256,"endColumn":62,"suggestions":"129"},{"ruleId":"123","severity":1,"message":"124","line":258,"column":62,"nodeType":"125","messageId":"126","endLine":258,"endColumn":75,"suggestions":"130"},{"ruleId":"123","severity":1,"message":"124","line":281,"column":3,"nodeType":"125","messageId":"126","endLine":281,"endColumn":13,"suggestions":"131"},{"ruleId":"123","severity":1,"message":"124","line":294,"column":3,"nodeType":"125","messageId":"126","endLine":294,"endColumn":13,"suggestions":"132"},{"ruleId":"123","severity":1,"message":"124","line":295,"column":3,"nodeType":"125","messageId":"126","endLine":295,"endColumn":13,"suggestions":"133"},{"ruleId":"123","severity":1,"message":"124","line":295,"column":29,"nodeType":"125","messageId":"126","endLine":295,"endColumn":42,"suggestions":"134"},{"ruleId":"123","severity":1,"message":"124","line":295,"column":50,"nodeType":"125","messageId":"126","endLine":295,"endColumn":63,"suggestions":"135"},{"ruleId":"136","severity":1,"message":"137","line":328,"column":9,"nodeType":"138","messageId":"139","endLine":328,"endColumn":12},{"ruleId":"136","severity":1,"message":"140","line":329,"column":8,"nodeType":"138","messageId":"139","endLine":329,"endColumn":13},{"ruleId":"136","severity":1,"message":"141","line":174,"column":17,"nodeType":"138","messageId":"139","endLine":174,"endColumn":30},{"ruleId":"136","severity":1,"message":"142","line":378,"column":15,"nodeType":"138","messageId":"139","endLine":378,"endColumn":25},{"ruleId":"136","severity":1,"message":"143","line":71,"column":15,"nodeType":"138","messageId":"139","endLine":71,"endColumn":21},{"ruleId":"144","severity":1,"message":"145","line":110,"column":18,"nodeType":"146","messageId":"147","endLine":110,"endColumn":21,"suggestions":"148"},{"ruleId":"136","severity":1,"message":"149","line":27,"column":9,"nodeType":"138","messageId":"139","endLine":27,"endColumn":17},{"ruleId":"136","severity":1,"message":"150","line":2,"column":24,"nodeType":"138","messageId":"139","endLine":2,"endColumn":34},{"ruleId":"136","severity":1,"message":"151","line":4,"column":10,"nodeType":"138","messageId":"139","endLine":4,"endColumn":28},{"ruleId":"136","severity":1,"message":"152","line":4,"column":30,"nodeType":"138","messageId":"139","endLine":4,"endColumn":49},"@typescript-eslint/no-non-null-assertion","Forbidden non-null assertion.","TSNonNullExpression","noNonNull",["153"],["154"],["155"],["156"],["157"],["158"],["159"],["160"],["161"],"@typescript-eslint/no-unused-vars","'ref' is defined but never used.","Identifier","unusedVar","'Modal' is defined but never used.","'prestigeStore' is assigned a value but never used.","'credential' is assigned a value but never used.","'height' is assigned a value but never used.","@typescript-eslint/no-explicit-any","Unexpected any. Specify a different type.","TSAnyKeyword","unexpectedAny",["162","163"],"'useToast' is defined but never used.","'collection' is defined but never used.","'initializeAppCheck' is defined but never used.","'ReCaptchaV3Provider' is defined but never used.",{"messageId":"164","fix":"165","desc":"166"},{"messageId":"164","fix":"167","desc":"166"},{"messageId":"164","fix":"168","desc":"166"},{"messageId":"164","fix":"169","desc":"166"},{"messageId":"164","fix":"170","desc":"166"},{"messageId":"164","fix":"171","desc":"166"},{"messageId":"164","fix":"172","desc":"166"},{"messageId":"164","fix":"173","desc":"166"},{"messageId":"164","fix":"174","desc":"166"},{"messageId":"175","fix":"176","desc":"177"},{"messageId":"178","fix":"179","desc":"180"},"suggestOptionalChain",{"range":"181","text":"182"},"Consider using the optional chain operator `?.` instead. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator.",{"range":"183","text":"182"},{"range":"184","text":"182"},{"range":"185","text":"182"},{"range":"186","text":"182"},{"range":"187","text":"182"},{"range":"188","text":"182"},{"range":"189","text":"182"},{"range":"190","text":"182"},"suggestUnknown",{"range":"191","text":"192"},"Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.","suggestNever",{"range":"191","text":"193"},"Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.",[8615,8616],"?",[8758,8759],[8853,8854],[8992,8993],[9678,9679],[10057,10058],[10112,10113],[10141,10142],[10162,10163],[3553,3556],"unknown","never"] \ No newline at end of file diff --git a/src/stores/gameStore.ts b/src/stores/gameStore.ts index 49a6754..0ba1032 100644 --- a/src/stores/gameStore.ts +++ b/src/stores/gameStore.ts @@ -14,6 +14,9 @@ export const useGameStore = defineStore('gameStore', { loggedIn: false, larvae: 0, ants: 0, + eliteAnts: 0, + + eliteAntsUnlocked: false, larvaeAccumulator: 0, // To accumulate fractional larvae production seedAccumulator: 0, // To accumulate fractional seed production @@ -27,12 +30,14 @@ export const useGameStore = defineStore('gameStore', { maxLarvae: 10, // Initial larvae storage capacity maxAnts: 100, // Initial ant storage capacity maxQueens: 2, // Initial queen storage capacity + maxEliteAnts: 1, // Initial resource caps initialMaxSeeds: 1000, initialMaxLarvae: 10, initialMaxAnts: 100, initialMaxQueens: 2, + initialMaxEliteAnts: 1, // Upgrade variables seedStorageUpgradeCost: 500, // Initial cost to upgrade seed storage @@ -47,10 +52,14 @@ export const useGameStore = defineStore('gameStore', { collectionRatePerAnt: 60, // Seeds collected per ant per minute seedCostPerLarva: 100, // Cost in seeds to create one larva seedCostPerAnt: 50, // Cost in seeds to create one ant + seedCostPerEliteAnt: 100, larvaCostPerAnt: 1, // Cost in larvae to create one ant + larvaCostPerEliteAnt: 5, antCostPerQueen: 100, // Ants required to buy one queen seedCostPerQueen: 250, // Seeds required to buy one queen + multiplierPerEliteAnt: 1.5, + // Adventure-related variables attackPerAnt: 2, // Attack value per ant healthPerAnt: 10, // Health value per ant @@ -67,7 +76,7 @@ export const useGameStore = defineStore('gameStore', { // Calculate larvae production per second for real-time updates larvaePerSecond: (state) => (state.queens * state.larvaeProductionRate) / 60, // Calculate seed production per second based on ants - seedsPerSecond: (state) => (state.collectionRatePerAnt * state.ants) / 60, + seedsPerSecond: (state) => (state.collectionRatePerAnt * state.ants * (state.eliteAnts * state.multiplierPerEliteAnt)) / 60, }, actions: { @@ -111,6 +120,21 @@ export const useGameStore = defineStore('gameStore', { this.ants += maxAntsToCreate } }, + // Function to create ants using larvae and seeds + createEliteAnts() { + if (this.larvae >= this.larvaCostPerEliteAnt && this.seeds >= this.seedCostPerEliteAnt && this.eliteAnts < this.maxEliteAnts) { + this.eliteAnts += 1 + this.larvae -= this.larvaCostPerEliteAnt + this.seeds -= this.seedCostPerEliteAnt + return true + } + + return false + }, + // Create max ants based on available larvae and seeds + createEliteMaxAnts() { + while (this.createEliteAnts()) {} + }, // Function to buy more queens buyQueen() { if (this.ants >= this.antCostPerQueen && this.seeds >= this.seedCostPerQueen && this.queens < this.maxQueens) { @@ -446,12 +470,14 @@ export const useGameStore = defineStore('gameStore', { const prestigeStore = usePrestigeStore() return { ants: this.ants, + eliteAnts: this.eliteAnts, seeds: this.seeds, queens: this.queens, larvae: this.larvae, maxSeeds: this.maxSeeds, maxLarvae: this.maxLarvae, maxAnts: this.maxAnts, + maxEliteAnts: this.maxEliteAnts, maxQueens: this.maxQueens, seedStorageUpgradeCost: this.seedStorageUpgradeCost, larvaeStorageUpgradeCost: this.larvaeStorageUpgradeCost, @@ -519,12 +545,14 @@ export const useGameStore = defineStore('gameStore', { loadStateFromFirebase(savedState) { this.ants = savedState.ants ?? this.ants + this.eliteAnts = savedState.eliteAnts ?? this.eliteAnts this.seeds = savedState.seeds ?? this.seeds this.queens = savedState.queens ?? this.queens this.larvae = savedState.larvae ?? this.larvae this.maxSeeds = savedState.maxSeeds ?? this.maxSeeds this.maxLarvae = savedState.maxLarvae ?? this.maxLarvae this.maxAnts = savedState.maxAnts ?? this.maxAnts + this.maxEliteAnts = savedState.maxEliteAnts ?? this.maxEliteAnts this.maxQueens = savedState.maxQueens ?? this.maxQueens this.seedStorageUpgradeCost = savedState.seedStorageUpgradeCost ?? this.seedStorageUpgradeCost this.larvaeStorageUpgradeCost = savedState.larvaeStorageUpgradeCost ?? this.larvaeStorageUpgradeCost @@ -537,6 +565,8 @@ export const useGameStore = defineStore('gameStore', { const prestigeStore = usePrestigeStore() prestigeStore.loadPrestigeState(savedState) + + this.eliteAntsUnlocked = prestigeStore.upgradePurchased('eliteAnts') }, async loadOtherStoreStates() { @@ -594,6 +624,7 @@ export const useGameStore = defineStore('gameStore', { this.ants = 0 this.seeds = 10 this.queens = 1 + this.eliteAnts = 0 this.larvaeProductionRate = 1 this.collectionRatePerAnt = 60 @@ -601,6 +632,7 @@ export const useGameStore = defineStore('gameStore', { this.maxSeeds = this.initialMaxSeeds this.maxLarvae = this.initialMaxLarvae this.maxAnts = this.initialMaxAnts + this.maxEliteAnts = this.initialMaxEliteAnts this.maxQueens = this.initialMaxQueens this.seedStorageUpgradeCost = 500 @@ -626,6 +658,7 @@ export const useGameStore = defineStore('gameStore', { resetDebugState() { const prestigeStore = usePrestigeStore() prestigeStore.prestigePoints = 0 + prestigeStore.timesPrestiged = 0 prestigeStore.purchasedUpgrades = [] this.healthPerAnt = 10 diff --git a/src/stores/prestigeStore.ts b/src/stores/prestigeStore.ts index 392f874..21429bf 100644 --- a/src/stores/prestigeStore.ts +++ b/src/stores/prestigeStore.ts @@ -1,6 +1,7 @@ import {defineStore} from 'pinia' import {useGameStore} from './gameStore' import {useInventoryStore} from './inventoryStore' +import {useToast} from 'vue-toast-notification' interface PrestigeShopItem { @@ -10,7 +11,8 @@ interface PrestigeShopItem { cost: number oneTimePurchase?: boolean applyOnPrestige?: boolean - category?: 'auto' | 'production' | 'storage' | 'combat' | 'expansion' + category?: 'auto' | 'production' | 'storage' | 'combat' | 'expansion', + unlockedWhen?: () => boolean // Function to determine if the upgrade is unlocked } export const usePrestigeStore = defineStore('prestige', { @@ -58,7 +60,15 @@ export const usePrestigeStore = defineStore('prestige', { { id: 'betterAnts', name: 'Stronger Ants', - description: 'Increase ant strength by 10%', + description: 'Increase ants army strength by 10%', + cost: 50, + applyOnPrestige: false, + category: 'combat', + }, + { + id: 'betterAntsDefense', + name: 'Stronger Ants Defense', + description: 'Increase ants army defense by 10%', cost: 50, applyOnPrestige: false, category: 'combat', @@ -71,6 +81,18 @@ export const usePrestigeStore = defineStore('prestige', { applyOnPrestige: true, category: 'expansion', }, + { + id: 'eliteAnts', + name: 'Elite Ants', + description: 'Unlock elite ants', + cost: 2500, + applyOnPrestige: true, + oneTimePurchase: true, + category: 'expansion', + unlockedWhen: () => { + return usePrestigeStore().timesPrestiged >= 5 + }, + }, { id: 'storageUpgrade', name: 'Storage Upgrade', @@ -78,6 +100,17 @@ export const usePrestigeStore = defineStore('prestige', { cost: 5, category: 'storage', }, + { + id: 'eliteAntsStoreUpgrade', + name: 'Elite Ants Store Upgrade', + description: 'Increase the amount of elite ants you can store by 100%', + cost: 100, + applyOnPrestige: false, + category: 'storage', + unlockedWhen: () => { + return usePrestigeStore().timesPrestiged >= 5 + }, + }, { id: 'productionBoost', name: 'Production Boost', @@ -154,6 +187,11 @@ export const usePrestigeStore = defineStore('prestige', { this.prestigePoints += earnedPrestigePoints this.timesPrestiged += 1 + if (this.timesPrestiged === 5) { + const $toast = useToast() + $toast.info('You have unlocked the Elite Ants upgrade in the prestige shop!') + } + // Reset the game state for prestige without deleting the Firestore doc gameStore.resetLocalGameState({isDebug: false}) @@ -186,9 +224,10 @@ export const usePrestigeStore = defineStore('prestige', { return false }, buyMaxUpgrade(upgradeId: string): boolean { - while (this.buyUpgrade(upgradeId)) {} + while (this.buyUpgrade(upgradeId)) { + } - return true + return true }, // Apply a purchased upgrade applyPrestigeUpgrade(upgradeId, fromPrestige = false) { @@ -210,6 +249,9 @@ export const usePrestigeStore = defineStore('prestige', { gameStore.maxAnts *= 2 // Increase ant storage gameStore.maxQueens *= 1.5 // Increase queen storage }, + eliteAntsStoreUpgrade: () => { + gameStore.maxEliteAnts *= 2 // Increase elite ant storage + }, productionBoost: () => { gameStore.larvaeProductionRate *= 1.2 gameStore.collectionRatePerAnt *= 1.2 @@ -224,6 +266,10 @@ export const usePrestigeStore = defineStore('prestige', { gameStore.attackPerAnt *= 1.1 gameStore.setupAdventureStats() }, + betterAntsDefense: () => { + gameStore.defensePerAnt *= 1.1 + gameStore.setupAdventureStats() + }, autoAnts: () => { this.autoAntCreation = true }, @@ -237,6 +283,9 @@ export const usePrestigeStore = defineStore('prestige', { gameStore.ants += 1 this.antsFromPrestigeShop += 1 }, + eliteAnts: () => { + gameStore.eliteAntsUnlocked = true + }, } // Execute the appropriate upgrade or log an error if the upgrade ID is invalid @@ -258,23 +307,28 @@ export const usePrestigeStore = defineStore('prestige', { getPrestigeState() { return { prestigePoints: this.prestigePoints, + timesPrestiged: this.timesPrestiged, purchasedUpgrades: this.purchasedUpgrades, storagePrestigeCost: this.prestigeShop.find(u => u.id === 'storageUpgrade')?.cost ?? 5, + eliteAntsStoreUpgradeCost: this.prestigeShop.find(u => u.id === 'eliteAntsStoreUpgrade')?.cost ?? 100, productionPrestigeCost: this.prestigeShop.find(u => u.id === 'productionBoost')?.cost ?? 10, queenPrestigeCost: this.prestigeShop.find(u => u.id === 'queenEfficiency')?.cost ?? 15, betterAntsPrestigeCost: this.prestigeShop.find(u => u.id === 'betterAnts')?.cost ?? 50, + betterAntsDefensePrestigeCost: this.prestigeShop.find(u => u.id === 'betterAntsDefense')?.cost ?? 50, startWithAntsPrestigeCost: this.prestigeShop.find(u => u.id === 'startWithAnts')?.cost ?? 15, autoLarvaeCreation: this.autoLarvaeCreation, autoAntCreation: this.autoAntCreation, autoQueenCreation: this.autoQueenCreation, autoSeedStorageUpgrade: this.autoSeedStorageUpgrade, + eliteAntsUnlocked: this.upgradePurchased('eliteAnts'), } }, loadPrestigeState(savedState) { this.prestigePoints = savedState.prestigePoints ?? this.prestigePoints + this.timesPrestiged = savedState.timesPrestiged ?? this.timesPrestiged this.purchasedUpgrades = savedState.purchasedUpgrades ?? this.purchasedUpgrades this.autoLarvaeCreation = savedState.autoLarvaeCreation ?? this.autoLarvaeCreation @@ -284,27 +338,30 @@ export const usePrestigeStore = defineStore('prestige', { // Load prestige shop costs this.prestigeShop.forEach(shop => { - if (shop.id === 'storageUpgrade') shop.cost = savedState.storagePrestigeCost - if (shop.id === 'productionBoost') shop.cost = savedState.productionPrestigeCost - if (shop.id === 'queenEfficiency') shop.cost = savedState.queenPrestigeCost - if (shop.id === 'betterAnts') shop.cost = savedState.betterAntsPrestigeCost - if (shop.id === 'startWithAnts') shop.cost = savedState.startWithAntsPrestigeCost + if (shop.id === 'storageUpgrade') shop.cost = savedState.storagePrestigeCost ?? 5 + if (shop.id === 'eliteAntsStoreUpgrade') shop.cost = savedState.eliteAntsStoreUpgradeCost ?? 100 + if (shop.id === 'productionBoost') shop.cost = savedState.productionPrestigeCost ?? 10 + if (shop.id === 'queenEfficiency') shop.cost = savedState.queenPrestigeCost ?? 15 + if (shop.id === 'betterAnts') shop.cost = savedState.betterAntsPrestigeCost ?? 50 + if (shop.id === 'betterAntsDefense') shop.cost = savedState.betterAntsDefensePrestigeCost ?? 50 + if (shop.id === 'startWithAnts') shop.cost = savedState.startWithAntsPrestigeCost ?? 15 }) }, resetPrestigeShopCosts() { this.prestigeShop.forEach(shop => { if (shop.id === 'storageUpgrade') shop.cost = 5 + if (shop.id === 'eliteAntsStoreUpgrade') shop.cost = 100 if (shop.id === 'productionBoost') shop.cost = 10 if (shop.id === 'queenEfficiency') shop.cost = 15 if (shop.id === 'autoLarvae') shop.cost = 10 if (shop.id === 'betterAnts') shop.cost = 50 + if (shop.id === 'betterAntsDefense') shop.cost = 50 if (shop.id === 'autoAnts') shop.cost = 20 if (shop.id === 'autoQueens') shop.cost = 20 if (shop.id === 'startWithAnts') shop.cost = 15 + if (shop.id === 'eliteAnts') shop.cost = 2500 }) }, - - }, }) diff --git a/src/views/AntResources.vue b/src/views/AntResources.vue index 2708255..52ac41d 100644 --- a/src/views/AntResources.vue +++ b/src/views/AntResources.vue @@ -5,7 +5,7 @@
I will be adding more features and balancing the game over time.
- Also, any progress made may be reset at any time. + Also, any progress made may be reset at any time during current development stage.

@@ -240,6 +240,55 @@
+ +
+
+

+ Elite Ants +

+

+ Elite Ants help the ants to collect resources faster. +

+
+
+
+

+ Count: {{ formatNumber(gameStore.eliteAnts, 0) }}/{{ formatNumber(gameStore.maxEliteAnts, 0) }} +

+
+
+ + +
+
+
+
+

+ LOCKED +

+
+
diff --git a/src/views/PrestigeShop.vue b/src/views/PrestigeShop.vue index 77dc0ea..7537bb7 100644 --- a/src/views/PrestigeShop.vue +++ b/src/views/PrestigeShop.vue @@ -20,10 +20,12 @@
  • - Seeds: Prestige points start at 2000 seeds. After that, points increase slowly on a logarithmic scale. + Seeds: Prestige points start at 2000 seeds. After that, points increase slowly on a + logarithmic scale.
  • - Ants: For every 50 ants (excluding those bought via the Prestige Shop), you earn 1 prestige point. + Ants: For every 50 ants (excluding those bought via the Prestige Shop), you earn 1 prestige + point.
  • Queens: After the first queen, every additional queen gives 2 prestige points. @@ -31,7 +33,7 @@
-

Prestige Points: {{ formatNumber(prestigeStore.prestigePoints) }}

+

Prestige Points: {{ formatNumber(prestigeStore.prestigePoints) }}
Prestige Times: {{ formatNumber(prestigeStore.timesPrestiged) }}

+ +
-
- - +
+

+ Locked +

@@ -112,7 +126,7 @@