From 41b75cfa9937f8dba3969440f16179694adab501 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 15 Oct 2026 14:31:15 +0400 Subject: [PATCH 01/24] -added new aspects path of loyalty (non-core) - boosts sand income arcane assistance (non-core) - start with two sacrifices dancing leaves (core) - boosts kelp/seagrass income native knowledge (non-core) - boosts a world's unique frenzy member's income --- js/data/aspects.js | 202 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) diff --git a/js/data/aspects.js b/js/data/aspects.js index 6c154536..2a3e7fa2 100644 --- a/js/data/aspects.js +++ b/js/data/aspects.js @@ -231,6 +231,115 @@ SharkGame.Aspects = { tree.handleClickedAspect(this); }, }, + pathOfLoyalty: { // old name: pathOfResearch + posX: 450, + posY: 450, + width: 40, + height: 40, + + max: 10, + level: 0, + name: "Path of Loyalty", + description: "Good leadership attracts lasting effects, and undying loyalty.", + // old desc: "Knowledge leads to curiosity, and curiosity leads to progress, and progress leads to ascension." + getCost(level) { + return 3 * level + 2; + }, + getEffect(level) { + return ( + "Multiply the income of " + + sharktext.getResourceName("sand", false, 69, sharkcolor.getElementColor("tooltipbox", "background-color")) + + " by " + + (level + 1) + + "×." + ); + }, + getUnlocked() { + if (!SharkGame.Aspects.pathOfEnlightenment.level) { + return "???"; + } + if (gateway.completedWorlds.length < 3) { + return "Scout at least two worlds to unlock this aspect."; + } + }, + prerequisites: ["apotheosis"], + clicked(_event) { + tree.handleClickedAspect(this); + }, + apply(when) { + if (when === "init") { + res.applyModifier("aspectResourceIncomeBoost", "sand", this.level + 1); + // res.applyModifier("pathOfLoyalty", "ray", this.level + 0.5); + // res.applyModifier("pathOfLoyalty", "sandDigger", this.level + 1); + // res.applyModifier("pathOfLoyalty", "eel", this.level + 1); + // res.applyModifier("pathOfLoyalty", "sifter", this.level + 0.5); + // res.applyModifier("pathOfLoyalty", "urchin", this.level + 0.5); + // res.applyModifier("pathOfLoyalty", "miller", this.level + 1); + // res.applyModifier("pathOfLoyalty", "pulveriser", this.level + 1); + } + }, + }, + arcaneAssistance: { + posX: 500, + posY: 550, + width: 40, + height: 40, + + max: 10, + level: 0, + name: "Arcane Assistance", + description: "Curiosity yields risk, but is the seed of lasting progress.", + getCost(level) { + return 3 * level + 2; + }, + getEffect(level) { + return ( + "Start with " + + 1 * 2 ** level + + " " + + sharktext.getResourceName("sacrifice", false, 69, sharkcolor.getElementColor("tooltipbox", "background-color")) + + ". Each world will receive different resource boosts." + ); + }, + getUnlocked() { + return gateway.completedWorlds.includes("shrouded") ? "" : "Complete the Shrouded worldtype to unlock this aspect."; + }, + prerequisites: ["pathOfLoyalty"], + clicked(_event) { + tree.handleClickedAspect(this); + }, + apply(when) { + if (when === "init" && res.getResource("kelpAspectSacrifice") === 0 && !SharkGame.flags.arcaneAssistanceApplied) { + const base = 1 * 2 ** this.level; + switch (world.worldType) { + case "shrouded": + res.changeResource("jellyAspectSacrifice", base); + break; + case "haven": + res.changeResource("coralAspectSacrifice", base); + break; + case "volcanic": + res.changeResource("volcanicAspectSacrifice", base); + break; + case "tempestuous": + res.changeResource("seagrassAspectSacrifice", base); + break; + case "marine": + res.changeResource("clamAspectSacrifice", base); + break; + case "abandoned": + res.changeResource("spongeAspectSacrifice", base); + break; + case "shore": + res.changeResource("seagrassAspectSacrifice", base); + break; + default: + res.changeResource("kelpAspectSacrifice", base); + } + SharkGame.flags.arcaneAssistanceApplied = true; + } + }, + }, pathOfTime: { posX: 450, posY: 250, @@ -841,6 +950,99 @@ SharkGame.Aspects = { tree.handleClickedAspect(this); }, }, + dancingLeaves: { + posX: 330, + posY: 440, + width: 40, + height: 40, + + max: 10, + level: 0, + name: "Dancing Leaves", + description: "Faceless. Mindless. Boundless.", + getCost(level) { + return 3 * level + 2; + }, + getEffect(level) { + return ( + "Multiply the income of " + + sharktext.getResourceName("kelp", false, 69, sharkcolor.getElementColor("tooltipbox", "background-color")) + + " or " + + sharktext.getResourceName("seagrass", false, 69, sharkcolor.getElementColor("tooltipbox", "background-color")) + + " by " + + (level + 1) + + "×." + ); + }, + getUnlocked() {}, + prerequisites: ["apotheosis"], + clicked(_event) { + tree.handleClickedAspect(this); + }, + apply(when) { + if (when === "init") { + res.applyModifier("aspectResourceIncomeBoost", "kelp", this.level + 1); + res.applyModifier("aspectResourceIncomeBoost", "seagrass", this.level + 1); + // res.applyModifier("dancingLeaves", "planter", this.level + 1); + // res.applyModifier("dancingLeaves", "stormgoer", this.level + 1); + // res.applyModifier("dancingLeaves", "stabilizer", this.level + 1); + // res.applyModifier("dancingLeaves", "seagrassFarm", this.level + 1); + // res.applyModifier("dancingLeaves", "urchin", this.level + 0.5); + // res.applyModifier("dancingLeaves", "connoisseur", this.level + 1); + // res.applyModifier("dancingLeaves", "seagrassPicker", this.level + 1); + // res.applyModifier("dancingLeaves", "shoreQueller", this.level + 0.25); + } + }, + }, + nativeKnowledge: { + posX: 444, + posY: 595, + width: 40, + height: 40, + + max: 10, + level: 0, + name: "Native Knowledge", + description: "Those in their element are the best to learn from.", + getCost(level) { + return 2 * level + 2; + }, + getEffect(level) { + return ( + "Multiply the efficiency of a world's unique frenzy members by " + + (level + 1) + + "×." + ); + }, + getUnlocked() { + if (!SharkGame.Aspects.pathOfEnlightenment.level) { + return "???"; + } + if (gateway.completedWorlds.length < 3) { + return "Scout at least two worlds to unlock this aspect."; + } + }, + prerequisites: ["apotheosis"], + clicked(_event) { + tree.handleClickedAspect(this); + }, + apply(when) { + if (when === "init") { + res.applyModifier("pathOfIndustry", "octopus", this.level + 1); + res.applyModifier("pathOfIndustry", "squid", this.level + 1); + res.applyModifier("pathOfIndustry", "urchin", this.level + 1); + res.applyModifier("pathOfIndustry", "dolphin", this.level + 1); + res.applyModifier("pathOfIndustry", "whale", this.level + 1); + res.applyModifier("pathOfIndustry", "billfish", this.level + 1); + res.applyModifier("pathOfIndustry", "chimaera", this.level + 1); + res.applyModifier("pathOfIndustry", "eel", this.level + 1); + res.applyModifier("pathOfIndustry", "lobster", this.level + 1); + res.applyModifier("pathOfIndustry", "shrimp", this.level + 1); + res.applyModifier("pathOfIndustry", "mudskipper", this.level + 1); + res.applyModifier("pathOfIndustry", "caracara", this.level + 1); + } + }, + }, // deprecated From d6e07b25c7c947420a27959b214978ae192f6e5c Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 15 Oct 2026 14:35:50 +0400 Subject: [PATCH 02/24] -added aspect sacrifices --- js/data/resourcetable.js | 126 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 125 insertions(+), 1 deletion(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 91c4e514..aa3bb8c1 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -113,6 +113,58 @@ SharkGame.ResourceTable = { }, }, + // ASPECT SACRIFICES (for Arcane Assistance aspect) + + jellyAspectSacrifice: { + name: "sacrifices
", + singleName: "sacrifice
", + desc: "The cost of progress.", + color: "#FFD6FC", + value: 1, + }, + clamAspectSacrifice: { + name: "sacrifices
", + singleName: "sacrifice
", + desc: "The cost of progress.", + color: "#FFD6FC", + value: 1, + }, + spongeAspectSacrifice: { + name: "sacrifices
", + singleName: "sacrifice
", + desc: "The cost of progress.", + color: "#FFD6FC", + value: 1, + }, + volcanicAspectSacrifice: { + name: "sacrifices
", // text in grotto was behaving weirdly + singleName: "sacrifice
", + desc: "The cost of progress.", + color: "#FFD6FC", + value: 1, + }, + seagrassAspectSacrifice: { + name: "sacrifices
", // looks like they all need it + singleName: "sacrifice
", + desc: "The cost of progress.", + color: "#FFD6FC", + value: 1, + }, + coralAspectSacrifice: { + name: "sacrifices
", + singleName: "sacrifice
", + desc: "The cost of progress.", + color: "#FFD6FC", + value: 1, + }, + kelpAspectSacrifice: { + name: "sacrifices
", + singleName: "sacrifice
", + desc: "The cost of progress.", + color: "#FFD6FC", + value: 1, + }, + // MAGICAL sacrifice: { @@ -1318,6 +1370,62 @@ SharkGame.GeneratorIncomeAffected = { }; SharkGame.ResourceIncomeAffectorsOriginal = { + jellyAspectSacrifice: { + multiply: { + fish: 0.001, + sand: 0.001, + crystal: 0.001, + jellyfish: 0.001, + }, + }, + clamAspectSacrifice: { + multiply: { + fish: 0.001, + sand: 0.001, + crystal: 0.001, + clam: 0.001, + }, + }, + spongeAspectSacrifice: { + multiply: { + fish: 0.001, + sand: 0.001, + crystal: 0.001, + sponge: 0.001, + }, + }, + volcanicAspectSacrifice: { + multiply: { + fish: 0.001, + sand: 0.001, + coral: 0.001, + sponge: 0.001, + }, + }, + seagrassAspectSacrifice: { + multiply: { + fish: 0.001, + sand: 0.001, + crystal: 0.001, + seagrass: 0.001, + }, + }, + coralAspectSacrifice: { + multiply: { + fish: 0.001, + sand: 0.001, + crystal: 0.001, + coral: 0.001, + }, + }, + kelpAspectSacrifice: { + multiply: { + fish: 0.001, + sand: 0.001, + crystal: 0.001, + kelp: 0.001, + }, + }, ice: { multiply: { ice: -0.00125, @@ -1590,7 +1698,20 @@ SharkGame.ResourceCategories = { hidden: { name: "Hidden", disposeMessage: ["Bad player! Stop it!"], - resources: ["world", "sacrifice", "aspectAffect", "specialResourceOne", "specialResourceTwo"], + resources: [ + "world", + "sacrifice", + "aspectAffect", + "specialResourceOne", + "specialResourceTwo", + "jellyAspectSacrifice", + "clamAspectSacrifice", + "spongeAspectSacrifice", + "volcanicAspectSacrifice", + "seagrassAspectSacrifice", + "coralAspectSacrifice", + "kelpAspectSacrifice", + ], }, }; @@ -1672,4 +1793,7 @@ SharkGame.InternalCategories = { basics: { resources: ["essence", "world", "aspectAffect", "specialResourceOne", "specialResourceTwo"], }, + aspectSacrifices: { + resources: ["jellyAspectSacrifice", "clamAspectSacrifice", "spongeAspectSacrifice", "volcanicAspectSacrifice", "seagrassAspectSacrifice", "coralAspectSacrifice", "kelpAspectSacrifice"], + }, }; From d30179657305ee8b43f38314f7c03f587bdcb04f Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 15 Oct 2026 14:37:17 +0400 Subject: [PATCH 03/24] -added new modifier for aspects --- js/data/modifiertypes.js | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/js/data/modifiertypes.js b/js/data/modifiertypes.js index 1144ddcf..2833ac71 100644 --- a/js/data/modifiertypes.js +++ b/js/data/modifiertypes.js @@ -587,6 +587,49 @@ SharkGame.ModifierTypes = { return input * (input > 0 && out !== "tar" ? genDegree : 1); }, }, + aspectResourceIncomeBoost: { // used for aspects which boost the generation of a base resource, e.g. sand or kelp + defaultValue: 1, + apply(current, degree, boostedResource) { + SharkGame.ResourceMap.forEach((generatingResource) => { + $.each(generatingResource.income, (generatedResource, amount) => { + if (generatedResource === boostedResource && amount > 0) { + generatingResource.income[generatedResource] = amount * degree; + } + }); + }); + return current * degree; + }, + effectDescription(degree, resource, background) { + return "All " + sharktext.getResourceName(resource, undefined, undefined, background) + " production × " + degree; + }, + getEffect(_genDegree, outDegree, gen, out) { + return SharkGame.ResourceMap.get(gen).income[out] > 0 && out !== "tar" ? outDegree : 1; + }, + applyToInput(input, _genDegree, outDegree, _gen, _out) { + return input > 0 ? input * outDegree : input; + }, + }, + /* dancingLeaves: { + defaultValue: 1, + apply(current, degree, resource) { + const incomes = SharkGame.ResourceMap.get(resource).income; + $.each(incomes, (resouceId, income) => { + if (income > 0 && resouceId !== "tar") { + incomes[resouceId] = income * degree; + } + }); + return current * degree; + }, + effectDescription(degree, resource, background) { + return sharktext.getResourceName(resource, undefined, undefined, background) + " efficiency × " + degree; + }, + getEffect(genDegree, _outDegree, gen, out) { + return SharkGame.ResourceMap.get(gen).income[out] > 0 && out !== "tar" ? genDegree : 1; + }, + applyToInput(input, genDegree, _outDegree, _gen, out) { + return input * (input > 0 && out !== "tar" ? genDegree : 1); + }, + }, */ constructedConception: { defaultValue: 1, apply(current, degree, resource) { From 00549d0a7361439c06c42e0d26828d847d17d414 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 15 Oct 2026 14:39:27 +0400 Subject: [PATCH 04/24] -added aspect sacrifices to the existence field and updated template --- js/data/worldtypes.js | 64 +++++++++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 1e26e359..9c90a48b 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -70,6 +70,7 @@ SharkGame.WorldTypes = { "sharkmachines", "clam", "lobstermachines", + "clamAspectSacrifice", ], absentResources: ["laser"], modifiers: [{ type: "multiplier", modifier: "planetaryResourceBoost", resource: "fish", amount: 2 }], @@ -95,7 +96,7 @@ SharkGame.WorldTypes = { longDesc: "The water is clear, the sand is clean, and the fish are plenty. A paradise in every way.", missing: ["laser", "sharkonium"], present: ["coral", "dolphin", "whale"], - tip: "The abudance of resources might may your stay here shorter than others.", + tip: "The abundance of resources might make your stay here shorter than others.", }, entry: "Remembering nothing, you find yourself in a beautiful atoll. Life will be good here.", style: "haven", @@ -111,6 +112,7 @@ SharkGame.WorldTypes = { "dolphinmachines", "coral", "chorus", + "coralAspectSacrifice", ], absentResources: ["laser"], modifiers: [ @@ -146,6 +148,7 @@ SharkGame.WorldTypes = { "seagrass", "chart", "map", + "seagrassAspectSacrifice", ], absentResources: ["planter", "crystalMiner"], modifiers: [{ type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "sandDigger", amount: 24 }], @@ -180,6 +183,7 @@ SharkGame.WorldTypes = { "sponge", "algae", "coral", + "volcanicAspectSacrifice", ], absentResources: ["crystal", "laser", "planter"], modifiers: [{ type: "multiplier", modifier: "planetaryFishMultiplier", resource: "ray", amount: 15 }], @@ -233,6 +237,7 @@ SharkGame.WorldTypes = { "ancientPart", "world", "aspectAffect", + "spongeAspectSacrifice", ], absentResources: ["kelp", "seaApple", "planter"], modifiers: [{ type: "multiplier", modifier: "planetaryIncome", resource: "tar", amount: -0.02 }], @@ -273,6 +278,7 @@ SharkGame.WorldTypes = { "jellyfish", "sacrifice", "aspectAffect", + "jellyAspectSacrifice", ], absentResources: ["laser"], modifiers: [{ type: "multiplier", modifier: "planetaryIncomeReciprocalMultiplier", resource: "scientist", amount: 1 }], @@ -316,6 +322,7 @@ SharkGame.WorldTypes = { "essence", "world", "aspectAffect", + "kelpAspectSacrifice", ], modifiers: [ { @@ -337,23 +344,46 @@ SharkGame.WorldTypes = { }, par: 45, }, - template: { - name: "", - desc: "description in gateway", - shortDesc: "status", - entry: "enter world", - style: "default", - absentResources: ["knowledge", "tar", "ice", "heater", "chimaera"], - modifiers: [{ type: "multiplier", modifier: "planetaryResourceBoost", resource: "fish", amount: 1.5 }], - gateType: "slots", - gateCosts: { - fish: 1, - sand: 1, - crystal: 1, - kelp: 1, - seaApple: 1, - sharkonium: 1, + template: { // this version updated by Three Eels + name: "template", + vagueDesc: "feels ______", // before scouting + desc: "description in gateway", // after you've scouted it + shortDesc: "status", // you are a shark in a ____ ____ sea + foresight: { // field for the info the foresight aspect gives + vagueLongDesc: "", // more detailed description, before scouting + longDesc: "", // more detailed description, after scouting + missing: [], // states the absent resources + present: [], // states the world-specific resources included + tip: "", // give a tip for gameplay + }, + entry: "enter world", // message put in the log upon entry. describe the setting, and emphasise a lack of memory of previous events. + style: "default", // change to the ocean's name + includedResources: [ // for every present resource, e.g. the normal things + the world's frenzy member, special resource, clams/jellyfish/sponge, machine-making material, and machines + "essence", + "world", + "aspectAffect", + "basicmaterials", // sand, fish, crystals, etc. + "sharks", + "rays", + "crabs", + "kelpstuff", // includes kelp and sea apples + "sharkmachines", // remove if sharks or their machines are absent from the narrative + ], + absentResources: ["knowledge", "tar", "ice", "heater", "chimaera"], // replace with resources that are essentially incapable of existing in the ocean + modifiers: [{ type: "multiplier", modifier: "planetaryResourceBoost", resource: "fish", amount: 1.5 }], // for any world-applied multipliers/generation + // gateType: "slots", + // the above field doesn't seem to do anything, nor is it present in the other worldtypes, so I removed it + gateRequirements: { // can also be an upgrade or the presence of a resource, e.g. the whale chorus + slots: { + fish: 1, + sand: 1, + crystal: 1, + kelp: 1, + seaApple: 1, + sharkonium: 1, + }, }, + par: 45, // how long the par time is in minutes }, stone: { name: "Stone", From 1412560c8c2cd9bc6b1944c5e98bd60537557217 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 15 Oct 2026 14:41:48 +0400 Subject: [PATCH 05/24] -fixed indentation mistakes --- js/data/worldtypes.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 9c90a48b..27270df0 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -70,7 +70,7 @@ SharkGame.WorldTypes = { "sharkmachines", "clam", "lobstermachines", - "clamAspectSacrifice", + "clamAspectSacrifice", ], absentResources: ["laser"], modifiers: [{ type: "multiplier", modifier: "planetaryResourceBoost", resource: "fish", amount: 2 }], @@ -112,7 +112,7 @@ SharkGame.WorldTypes = { "dolphinmachines", "coral", "chorus", - "coralAspectSacrifice", + "coralAspectSacrifice", ], absentResources: ["laser"], modifiers: [ @@ -148,7 +148,7 @@ SharkGame.WorldTypes = { "seagrass", "chart", "map", - "seagrassAspectSacrifice", + "seagrassAspectSacrifice", ], absentResources: ["planter", "crystalMiner"], modifiers: [{ type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "sandDigger", amount: 24 }], @@ -183,7 +183,7 @@ SharkGame.WorldTypes = { "sponge", "algae", "coral", - "volcanicAspectSacrifice", + "volcanicAspectSacrifice", ], absentResources: ["crystal", "laser", "planter"], modifiers: [{ type: "multiplier", modifier: "planetaryFishMultiplier", resource: "ray", amount: 15 }], @@ -278,7 +278,7 @@ SharkGame.WorldTypes = { "jellyfish", "sacrifice", "aspectAffect", - "jellyAspectSacrifice", + "jellyAspectSacrifice", ], absentResources: ["laser"], modifiers: [{ type: "multiplier", modifier: "planetaryIncomeReciprocalMultiplier", resource: "scientist", amount: 1 }], @@ -322,7 +322,7 @@ SharkGame.WorldTypes = { "essence", "world", "aspectAffect", - "kelpAspectSacrifice", + "kelpAspectSacrifice", ], modifiers: [ { From 97f29bd260a1b57197e061fcbb4a28dee885ae04 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 15 Oct 2026 14:47:42 +0400 Subject: [PATCH 06/24] -added new gateway messages --- js/gateway.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/gateway.js b/js/gateway.js index 090f7c23..da474e4e 100644 --- a/js/gateway.js +++ b/js/gateway.js @@ -1337,6 +1337,7 @@ SharkGame.Gateway.Messages = { "Tell me: Where do you see the line between friend and food? The urchins are as simple-minded as the fish.", "Do you wonder who the squid look up to?", "Do you wonder who built the great machine?", + "A common goal must be worked toward by all. You learned this. They learned this.", ], }, loss: [ @@ -1352,6 +1353,7 @@ SharkGame.Gateway.Messages = { "You and everything you knew has died. Perhaps not you. Perhaps not.", */ "One more try, perhaps?", "Excellence is pure habit. We are what we repeatedly do. Try again, and do better.", + "We learn, and as we learn, we change. We grow. You just have to make sure the world grows with you.", ], generic: [ "There is no warmth or cold here. Only numbness.", From 188df42b5917896d9db15c0d6c573106db829b38 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 15 Oct 2026 15:12:48 +0400 Subject: [PATCH 07/24] -added changelog entry reflects changes as of now only. --- js/main.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/js/main.js b/js/main.js index 1368b710..db1caee4 100644 --- a/js/main.js +++ b/js/main.js @@ -103,7 +103,14 @@ $.extend(SharkGame, { "On Sharker Tides", "Curse of the Shark", "Have I Played These Sharks Before?", - "Hollow Shark: Shark Song", + "Hollow Shark - Shark Song", + "Last Shark Standing", + "Sharkjago: Masters of Sharkjitsu", + "Shark: Galactic Ad-fin-tures", // this was a bad spin on 'Spore: Galactic Adventures' --ThreeEels + "Ray World", + "Ray World: Crabpour", // aggghhhh i can't find something good for The Watcher --ThreeEels + "I Have No Trout And I Must Bream", // my personal favourite --ThreeEels + "Nine Shoals", ], GAME_NAME: null, ACTUAL_GAME_NAME: "Shark Game", @@ -908,6 +915,12 @@ SharkGame.Button = { }; SharkGame.Changelog = { + /* "New Frontiers patch 12345678a": [ + "Added new aspects! Two boost the income of certain resources, one boosts the efficiency of a world's unique frenzy members, and the last one does something special.", + "Added a new gateway message for Frigid, and a new loss gateway message.", + "Added some new random tab names.", + "All changes here have been brought to you by Three Eels in a Jellyfish Coat. Remember my name; something bigger is coming.", + ], */ "New Frontiers patch 20260929a": [ "Fix typos in various facts thanks to BlazingPhonex", "Add some (as of yet unused) sprites", From 1ea36c3040968b2e2585ce2c3cd4ecb5b58b7a27 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 15 Oct 2026 15:18:43 +0400 Subject: [PATCH 08/24] -fixed tpyos in seaApplesToScience and seagrassToScience --- js/data/homeactions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 89207c9e..118df71f 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -317,7 +317,7 @@ SharkGame.HomeActions = { "This is perhaps maybe insightful!", "Why are we even doing this? Who knows! Science!", "What is even the point of these things? Why are they named for fruit? They're squirming!", - "Results still inconclusive! Unsurpsingly...", + "Results still inconclusive! Unsurprisingly...", ], helpText: "Dissect the sea apples our kelp attracts to gain additional science. Research!", }, @@ -4313,7 +4313,7 @@ SharkGame.HomeActions = { "The cause of science is advanced!", "This is perhaps maybe insightful!", "Why are we even doing this? Who knows! Science!", - "Results still inconclusive! Unsurpsingly...", + "Results still inconclusive! Unsurprisingly...", "Quick question. What's a flower?", "At least it's not gross.", "We would learn a lot more from these if they weren't so absolutely tiny.", From a27ebd4729bd4df56e66b9ba860775a2f1c443c8 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 17 Oct 2026 14:40:50 +0400 Subject: [PATCH 09/24] -added new aspect buried blueprints (non-core) - boosts the efficiency of a world's unique machines --- js/data/aspects.js | 50 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/js/data/aspects.js b/js/data/aspects.js index 2a3e7fa2..76af0202 100644 --- a/js/data/aspects.js +++ b/js/data/aspects.js @@ -1038,8 +1038,54 @@ SharkGame.Aspects = { res.applyModifier("pathOfIndustry", "eel", this.level + 1); res.applyModifier("pathOfIndustry", "lobster", this.level + 1); res.applyModifier("pathOfIndustry", "shrimp", this.level + 1); - res.applyModifier("pathOfIndustry", "mudskipper", this.level + 1); - res.applyModifier("pathOfIndustry", "caracara", this.level + 1); + // res.applyModifier("pathOfIndustry", "mudskipper", this.level + 1); + // res.applyModifier("pathOfIndustry", "caracara", this.level + 1); + } + }, + }, + buriedBlueprints: { + posX: 555, + posY: 676, + width: 40, + height: 40, + + max: 10, + level: 0, + name: "Buried Blueprints", + description: "Every world has its secrets, waiting to be uncovered.", + getCost(level) { + return 2 * level + 2; + }, + getEffect(level) { + return ( + "Multiply the efficiency of a world's unique machines by " + + (level + 1) + + "×." + ); + }, + getUnlocked() {}, + prerequisites: ["nativeKnowledge"], + clicked(_event) { + tree.handleClickedAspect(this); + }, + apply(when) { + if (when === "init") { + res.applyModifier("pathOfIndustry", "heater", this.level + 1); + res.applyModifier("pathOfIndustry", "tirelessCrafter", this.level + 1); + res.applyModifier("pathOfIndustry", "kelpCultivator", this.level + 1); + res.applyModifier("pathOfIndustry", "crimsonCombine", this.level + 1); + res.applyModifier("pathOfIndustry", "clamCollector", this.level + 1); + res.applyModifier("pathOfIndustry", "sprongeSmelter", this.level + 1); + res.applyModifier("pathOfIndustry", "eggBrooder", this.level + 1); + res.applyModifier("pathOfIndustry", "seabedStripper", this.level + 1); + res.applyModifier("pathOfIndustry", "calciniumConverter", this.level + 1); + res.applyModifier("pathOfIndustry", "clamScavenger", this.level + 1); + // res.applyModifier("pathOfIndustry", "shoreQueller", this.level + 1); + // res.applyModifier("pathOfIndustry", "driftwoodSnarer", this.level + 1); + // res.applyModifier("pathOfIndustry", "hardbarkSmith", this.level + 1); + res.applyModifier("pathOfIndustry", "shoveler", this.level + 1); + res.applyModifier("pathOfIndustry", "farmer", this.level + 1); + res.applyModifier("pathOfIndustry", "researcher", this.level + 1); } }, }, From 8f48ab8d249a9372381d90dcd0c5bfd5e13f1f44 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 26 Oct 2026 13:21:43 +0400 Subject: [PATCH 10/24] -added a new tab name --- js/main.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/main.js b/js/main.js index db1caee4..c23ebab2 100644 --- a/js/main.js +++ b/js/main.js @@ -103,7 +103,7 @@ $.extend(SharkGame, { "On Sharker Tides", "Curse of the Shark", "Have I Played These Sharks Before?", - "Hollow Shark - Shark Song", + "Hollow Shark - SharkSong", "Last Shark Standing", "Sharkjago: Masters of Sharkjitsu", "Shark: Galactic Ad-fin-tures", // this was a bad spin on 'Spore: Galactic Adventures' --ThreeEels @@ -111,6 +111,7 @@ $.extend(SharkGame, { "Ray World: Crabpour", // aggghhhh i can't find something good for The Watcher --ThreeEels "I Have No Trout And I Must Bream", // my personal favourite --ThreeEels "Nine Shoals", + "A Shark Room", ], GAME_NAME: null, ACTUAL_GAME_NAME: "Shark Game", From 1f1489eee5b95d9c2af3356fa6ed6f7020219281 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 26 Oct 2026 19:28:19 +0400 Subject: [PATCH 11/24] -added my name to the contributors! --- contributors.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contributors.html b/contributors.html index ca02f74c..b55909d6 100644 --- a/contributors.html +++ b/contributors.html @@ -128,6 +128,10 @@

SHARK GAME: NEW FRONTIERS

Adr Playtester, Code contributor + + Three Eels in a Jellyfish Coat + Concept Artist, Developer +