From 42cdd71dcd192f834d2840e1bec26b0b597daff6 Mon Sep 17 00:00:00 2001 From: ThreeCrabsinaTrenchcoat Date: Tue, 9 Dec 2025 21:56:29 +0400 Subject: [PATCH 001/152] Added the Shore worldtype code --- js/data/worldtypes.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 1e26e359..b8f1c389 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -355,6 +355,44 @@ SharkGame.WorldTypes = { sharkonium: 1, }, }, + shore: { //please note this worldtype code is very much WIP// + name: "Shore", + vagueDesc: "Feels shallow.", + desc: "A shallow, lapping beachfront.", + shortDesc: "small sandy", + foresight: { + vagueLongDesc: "This place is so shallow.", + longDesc: "A lapping, sandy ocean, creeping upon the shores.", + missing: [“kelpstuff”], + present: ["mudskipper", "driftwood", “hardbark”, "coral"], + tip: "", + }, + entry: "You enter a low-strung turquoise sea, all your memory a shade.", + style: "default", + includedResources: [ + "basics", + "coral", + "sharks", + "rays", + "crabs", + "mudskippers", + "basicmaterials”, + "sharkmachines", + "driftwood", + "mudskipperpuppets"], + absentResources: ["kelp"], + modifiers: [ + {type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1}] + gateType: "slots", + gateCosts: { + fish: 1, + sand: 1, + crystal: 1, + kelp: 1, + seaApple: 1, + sharkonium: 1, + }, + }, stone: { name: "Stone", desc: "A world unweathered by ocean currents. It has no natural sand.", From 89a84fad3f133ef92aff81688a6a8d7b1f805022 Mon Sep 17 00:00:00 2001 From: ThreeCrabsinaTrenchcoat Date: Tue, 9 Dec 2025 22:05:07 +0400 Subject: [PATCH 002/152] Added Shore Ocean components --- js/data/resourcetable.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 0206ae7d..b4759a14 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -829,6 +829,22 @@ SharkGame.ResourceTable = { value: 70, }, + // SHORE + + mudskipper: { + name: "mudskippers", + singleName: "mudskipper", + //color: "#undecided", + desc: "The liberated prey.", + income: { + driftwood: 0.5, + }, + //jobs: ["undecided"], + //value: 1000, (what does this mean?) + }, + + + // SHROUDED chimaera: { From 5b142f85f40faff6f094f46298ae4a803dd7192b Mon Sep 17 00:00:00 2001 From: ThreeCrabsinaTrenchcoat Date: Wed, 10 Dec 2025 09:45:10 +0400 Subject: [PATCH 003/152] Fixed some schtuff in the Shore worldtype.js --- js/data/worldtypes.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index b8f1c389..e48c65bf 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -363,8 +363,8 @@ SharkGame.WorldTypes = { foresight: { vagueLongDesc: "This place is so shallow.", longDesc: "A lapping, sandy ocean, creeping upon the shores.", - missing: [“kelpstuff”], - present: ["mudskipper", "driftwood", “hardbark”, "coral"], + missing: ["kelpstuff"], + present: ["mudskipper", "driftwood", "hardbark", "coral"], tip: "", }, entry: "You enter a low-strung turquoise sea, all your memory a shade.", @@ -388,9 +388,9 @@ SharkGame.WorldTypes = { fish: 1, sand: 1, crystal: 1, - kelp: 1, - seaApple: 1, - sharkonium: 1, + driftwood: 1, + coral: 1, + hardbark: 1, }, }, stone: { From b9b3e2ad7d8ada3464de873d39c90f5bf64ad466 Mon Sep 17 00:00:00 2001 From: ThreeCrabsinaTrenchcoat Date: Wed, 10 Dec 2025 09:48:49 +0400 Subject: [PATCH 004/152] Fixed the Shore worldtypes.js :P --- js/data/worldtypes.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index e48c65bf..317f3ef6 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -376,13 +376,14 @@ SharkGame.WorldTypes = { "rays", "crabs", "mudskippers", - "basicmaterials”, + "basicmaterials", "sharkmachines", "driftwood", "mudskipperpuppets"], absentResources: ["kelp"], modifiers: [ - {type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1}] + {type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1} + ] gateType: "slots", gateCosts: { fish: 1, From b54529fed9885b8228b3578d680dda845d8a0a96 Mon Sep 17 00:00:00 2001 From: ThreeCrabsinaTrenchcoat Date: Wed, 10 Dec 2025 09:52:34 +0400 Subject: [PATCH 005/152] Fully fixed the Shore worldtypes.js :D --- js/data/worldtypes.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 317f3ef6..5a78a078 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -365,7 +365,7 @@ SharkGame.WorldTypes = { longDesc: "A lapping, sandy ocean, creeping upon the shores.", missing: ["kelpstuff"], present: ["mudskipper", "driftwood", "hardbark", "coral"], - tip: "", + tip: "Not all is as it seems. Respect the brown fish that survive the beyond.", }, entry: "You enter a low-strung turquoise sea, all your memory a shade.", style: "default", @@ -383,7 +383,7 @@ SharkGame.WorldTypes = { absentResources: ["kelp"], modifiers: [ {type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1} - ] + ], gateType: "slots", gateCosts: { fish: 1, From 13e12885593cf032d73c5bc90b2d2f110d07bc64 Mon Sep 17 00:00:00 2001 From: ThreeCrabsinaTrenchcoat Date: Wed, 10 Dec 2025 12:08:14 +0400 Subject: [PATCH 006/152] Added Shore resources to the resourcetable.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I hope I put it in the right places… --- js/data/resourcetable.js | 50 ++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index b4759a14..2e62f8be 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -834,17 +834,42 @@ SharkGame.ResourceTable = { mudskipper: { name: "mudskippers", singleName: "mudskipper", - //color: "#undecided", + color: /*"#undecided"*/, desc: "The liberated prey.", income: { driftwood: 0.5, }, - //jobs: ["undecided"], - //value: 1000, (what does this mean?) + jobs: ["burrow"], + value: /*1000*/, //(what does this mean?) }, - + burrow: { + name: "mudskipper burrows", + singleName: "mudskipper burrow", + color: /*"#undecided"*/, + desc: "", + income: { + mudskipper: 0.05, + }, + value: /*dunno*/, + }, + driftwood: { + name: "driftwood", + singleName: "driftwood", + desc: "Buoyant detritus from the beyond.", + color: /*"#no idea yet"*/, + value: /*dunno either*/, + }, + + hardbark: { + name: "hardbark", + singleName: "hardbark", + desc: "Pistons and mechanisms for the puppets.", + color: /*"#smooth criminal"*/, + value: /*guess what? I still don't know*/, + }, + // SHROUDED chimaera: { @@ -1044,6 +1069,7 @@ SharkGame.ResourceTable = { chimaera: -0.001, octopus: -0.005, eel: -0.001, + mudskipper: -0.01, nurse: -0.003, maker: -0.003, brood: -0.003, @@ -1071,6 +1097,7 @@ SharkGame.ResourceTable = { collective: -0.001, extractionTeam: -0.001, spawner: -0.001, + burrow: -0.01, }, value: -100, forceIncome: true, @@ -1457,7 +1484,7 @@ SharkGame.ResourceCategories = { "Was it something they said?", "Are you happy with what you've done?", ], - resources: ["shark", "ray", "crab", "shrimp", "lobster", "dolphin", "whale", "chimaera", "octopus", "eel", "squid", "urchin", "billfish"], + resources: ["shark", "ray", "crab", "shrimp", "lobster", "dolphin", "whale", "chimaera", "octopus", "eel", "squid", "urchin", "billfish", "mudskipper"], }, animals: { name: "Animals", @@ -1492,6 +1519,7 @@ SharkGame.ResourceCategories = { "seagrass", // "stone", // "gravel", + "driftwood", ], }, processed: { @@ -1504,7 +1532,7 @@ SharkGame.ResourceCategories = { "The foundation of a modern shark frenzy, perhaps, but also sort of taking up all the space.", "Let's hope we don't regret it.", ], - resources: ["sharkonium", "coralglass", "delphinium", "spronge", "calcinium", "porite", "ancientPart", "junk", "filter"], + resources: ["sharkonium", "coralglass", "delphinium", "spronge", "calcinium", "porite", "ancientPart", "junk", "filter", "hardbark"], }, breeders: { name: "Breeders", @@ -1515,7 +1543,7 @@ SharkGame.ResourceCategories = { "You sure you want to disrupt this accelerated growth curve?", "Back to a simpler life, maybe.", ], - resources: ["nurse", "maker", "brood", "queen", "berrier", "biologist", "pit", "collective", "spawner", "billfishPair"], + resources: ["nurse", "maker", "brood", "queen", "berrier", "biologist", "pit", "collective", "spawner", "billfishPair", "burrow"], }, specialists: { name: "Specialists", @@ -1663,6 +1691,10 @@ SharkGame.InternalCategories = { name: "Billfish", resources: ["billfish", "billfishExplorer", "billfishMechanic", "billfishPair"], }, + mudskippers: { + name: "Mudskippers", + resources: ["mudskipper", "burrow"], + }, sharkmachines: { name: "Shark Machines", resources: ["sharkonium", "fishMachine", "sandDigger", "crystalMiner", "skimmer", "autoTransmuter"], @@ -1679,6 +1711,10 @@ SharkGame.InternalCategories = { name: "Lobster Machines", resources: ["calcinium", "seabedStripper", "calciniumConverter", "clamScavenger"], }, + mudskipperpuppets: { + name: "Mudskipper Puppets", + resources: [/*"no clue yet lol"*/], + }, basicmaterials: { resources: ["fish", "sand", "crystal", "science", "junk"], }, From 1e07d2dd0d9aa9cd4c637196499f5ca7af2d2e4a Mon Sep 17 00:00:00 2001 From: ThreeCrabsinaTrenchcoat Date: Wed, 10 Dec 2025 12:16:05 +0400 Subject: [PATCH 007/152] Added Multiplier to Shore worldtype.js --- js/data/worldtypes.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 5a78a078..a2c82781 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -382,7 +382,8 @@ SharkGame.WorldTypes = { "mudskipperpuppets"], absentResources: ["kelp"], modifiers: [ - {type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1} + { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1 } + { type: "multiplier", modifier: "planetaryResourceBoost", resource: "sand", amount: 2.5 } ], gateType: "slots", gateCosts: { From 480ae9b5196ede57d46090b6aa105f15d427baef Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Thu, 11 Dec 2025 11:07:40 +0400 Subject: [PATCH 008/152] Reserved section for Shore homeactions code, added to list --- js/data/homeactions.js | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index add3fcd7..f5a4eeab 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -1396,6 +1396,8 @@ SharkGame.HomeActions = { }, */ }, + +//--------------------------------------------------- abandoned: { catchFish: {}, @@ -1866,6 +1868,8 @@ SharkGame.HomeActions = { helpText: "This octopus machine imbues sponge with industrial potential. Requires residue for function.", }, }, + +//--------------------------------------------------- haven: { catchFish: {}, @@ -2330,6 +2334,8 @@ SharkGame.HomeActions = { "This dolphin machine creates delphinium. What good that is to us is a mystery. Use it to make their useless machines, I guess?", }, }, + +//--------------------------------------------------- frigid: { catchFish: {}, @@ -2605,6 +2611,8 @@ SharkGame.HomeActions = { }, }, }, + +//--------------------------------------------------- shrouded: { catchFish: {}, @@ -3201,6 +3209,8 @@ SharkGame.HomeActions = { getAutoTransmuter: {}, }, + +//--------------------------------------------------- marine: { catchFish: {}, @@ -3626,6 +3636,8 @@ SharkGame.HomeActions = { helpText: "Modify a lobster to fuse calcinium with cool cyborg laser beams.", // This crustacean machine distributes lobster eggs for optimal hatching conditions. }, }, + +//--------------------------------------------------- volcanic: { // FREEBIES //////////////////////////////////////////////////////////////////////////////// @@ -4284,6 +4296,8 @@ SharkGame.HomeActions = { helpText: "Pick a spot and set up a coral farm there.", }, }, + +//--------------------------------------------------- tempestuous: { catchFish: {}, @@ -4589,6 +4603,11 @@ SharkGame.HomeActions = { }, }, }, + + //--------------------------------------------------- + shore: { + /*placeholder my bruvver, placeholder*/ + }, }; SharkGame.HomeActionCategories = { @@ -4618,7 +4637,8 @@ SharkGame.HomeActionCategories = { "getOctopus", "getSquid", "getUrchin", - "getBillfish", + "getBillfish" + "getMudskipper", ], }, @@ -4669,7 +4689,8 @@ SharkGame.HomeActionCategories = { "getPit", "getCollective", "getSpawner", - "getBillfishPair", + "getBillfishPair" + "getBurrow", ], }, @@ -4692,7 +4713,8 @@ SharkGame.HomeActionCategories = { "fuseCalcinium", "toggleAutoSmelt", "smeltPorite", - "seagrassToScience", + "seagrassToScience" + "coatHardbark", ], }, From 94a18eacf25949fd030d9db7a48e1fb3133e1528 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Thu, 11 Dec 2025 15:08:33 +0400 Subject: [PATCH 009/152] Update resourcetable.js --- js/data/resourcetable.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 2e62f8be..c9acf03c 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -840,18 +840,18 @@ SharkGame.ResourceTable = { driftwood: 0.5, }, jobs: ["burrow"], - value: /*1000*/, //(what does this mean?) + value: 500, //(what does this mean?) }, burrow: { name: "mudskipper burrows", singleName: "mudskipper burrow", color: /*"#undecided"*/, - desc: "", + desc: "A tiny hole for tiny allies to flail around in. And make more allies.", income: { mudskipper: 0.05, }, - value: /*dunno*/, + value: 1000, }, driftwood: { @@ -859,7 +859,7 @@ SharkGame.ResourceTable = { singleName: "driftwood", desc: "Buoyant detritus from the beyond.", color: /*"#no idea yet"*/, - value: /*dunno either*/, + value: 1000, }, hardbark: { @@ -867,7 +867,7 @@ SharkGame.ResourceTable = { singleName: "hardbark", desc: "Pistons and mechanisms for the puppets.", color: /*"#smooth criminal"*/, - value: /*guess what? I still don't know*/, + value: 1500, }, // SHROUDED From 5a923a0473e6c223a5633188e17d2ba5d1ac75d2 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Thu, 11 Dec 2025 16:41:11 +0400 Subject: [PATCH 010/152] Added hex codes for Shore resources --- js/data/resourcetable.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index c9acf03c..be541bad 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -834,7 +834,7 @@ SharkGame.ResourceTable = { mudskipper: { name: "mudskippers", singleName: "mudskipper", - color: /*"#undecided"*/, + color: "#4E3900", desc: "The liberated prey.", income: { driftwood: 0.5, @@ -846,7 +846,7 @@ SharkGame.ResourceTable = { burrow: { name: "mudskipper burrows", singleName: "mudskipper burrow", - color: /*"#undecided"*/, + color: "#B38300", desc: "A tiny hole for tiny allies to flail around in. And make more allies.", income: { mudskipper: 0.05, @@ -858,7 +858,7 @@ SharkGame.ResourceTable = { name: "driftwood", singleName: "driftwood", desc: "Buoyant detritus from the beyond.", - color: /*"#no idea yet"*/, + color: "#342D19", value: 1000, }, @@ -866,7 +866,7 @@ SharkGame.ResourceTable = { name: "hardbark", singleName: "hardbark", desc: "Pistons and mechanisms for the puppets.", - color: /*"#smooth criminal"*/, + color: "#1F2F45", value: 1500, }, From 3a16f510f68a964bb4d57a062a6c68416fd2602b Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Fri, 12 Dec 2025 14:27:48 +0400 Subject: [PATCH 011/152] Updated Shore resourcetable.js --- js/data/resourcetable.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index be541bad..169d878a 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -869,6 +869,14 @@ SharkGame.ResourceTable = { color: "#1F2F45", value: 1500, }, + + mentor: { + name: "puppet mentors", + singleName: "puppet mentor", + desc: "Learned mudskippers, teaching the puppets known techniques.", + color: "#CC6600", + value: 2000, + }, // SHROUDED @@ -1582,7 +1590,8 @@ SharkGame.ResourceCategories = { // "prospector", // "shoveler", // "miller", - // "rockLobster", + // "rockLobster" + "mentor", ], }, machines: { @@ -1693,7 +1702,7 @@ SharkGame.InternalCategories = { }, mudskippers: { name: "Mudskippers", - resources: ["mudskipper", "burrow"], + resources: ["mudskipper", "burrow", "mentor"], }, sharkmachines: { name: "Shark Machines", @@ -1713,7 +1722,7 @@ SharkGame.InternalCategories = { }, mudskipperpuppets: { name: "Mudskipper Puppets", - resources: [/*"no clue yet lol"*/], + resources: ["hardbark"], }, basicmaterials: { resources: ["fish", "sand", "crystal", "science", "junk"], From 1e265ecbd3a63fc65370a61813fbb293f7a659a7 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Fri, 12 Dec 2025 16:40:41 +0400 Subject: [PATCH 012/152] Copy-pasted stuff from elsewhere --- js/data/homeactions.js | 118 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 117 insertions(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index f5a4eeab..8dd36443 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4606,8 +4606,123 @@ SharkGame.HomeActions = { //--------------------------------------------------- shore: { - /*placeholder my bruvver, placeholder*/ + + // MANUAL RESOURCE COLLECTION ///////////////////// + catchFish: {}, + debugButton: {}, + + // MAKE ADVANCED RESOURCES /////////////////////// + transmuteSharkonium: {}, + coatHardbark: { + name: "Coat driftwood to make hardbark", + effect: { + resource: { + hardbark: 1, + }, + }, + cost: [ + { + resource: "crystal", + costFunction: "constant", + get priceIncrease() { + return 5 - SharkGame.Aspects.syntheticTransmutation.level; + }, + }, + { + resource: "driftwood", + costFunction: "constant", + get priceIncrease() { + return 10 - 3 * SharkGame.Aspects.syntheticTransmutation.level; + }, + }, + ], + max: "hardbark", + prereq: { + upgrade: ["hardbarkCoating"], + }, + outcomes: [ + "Hardbark made. Yippee.", + "It’s just wood. In crystal.", + "A simple design, much like their inventors.", + "Yes, I suppose the crystal is really hard to coat with…", + "It’s… honestly a little impressive. For a fish, of course.", + "Gah. I’ve made so many typos trying to spell hardbark.", + ], + helpText: "Coat sturdy driftwood pieces with crystal to make hardbark.", + }, + + // BUY ANIMALS ///////////////////////////////// + getShark: {}, + getManta: {}, + getCrab: {}, + getMudskipper: { + name: "Liberate mudskipper", + effect: { + resource: { + mudskipper: 1, + }, + }, + cost: [ + { resource: "fish", costFunction: "linear", priceIncrease: 1 }, + ], + max: "mudskipper", + prereq: { + upgrade: ["mudskipperContact"], + }, + outcomes: [ + "An atlantic mudskipper joins you.", + "A barred mudskipper joins you.", + "A common mudskipper joins you.", + "A Pearse’s mudskipper joins you.", + "A great blue spotted mudskipper joins you.", + ], + multiOutcomes: [ + "Yessss! More woooodddd!!", + "These will certainly be useful...", + "Heh. Look at how scared they are.", + "Do you think we’re being too hard on them?", + "We’re doing them a favour.", + "What, they think we’re gonna eat them?", + ], + helpText: "Liberate a mudskipper from its boring old life and command it to retrieve driftwood for you.", + }, + + // MUDSKIPPER JOBS /////////////////////////// + getBurrow: { + name: "Dig mudskipper burrow", + effect: { + resource: { + burrow: 1, + }, + }, + cost: [ + { resource: "mudskipper", costFunction: "constant", priceIncrease: 3 }, + { resource: "fish", costFunction: "linear", priceIncrease: 15 }, + { resource: "sand", costFunction: "linear", priceIncrease: 12 }, + ], + max: "burrow", + prereq: { + resource: { + mudskipper: 1, + }, + upgrade: ["mudskipperBurrowing"], + }, + outcomes: [ + "//*to be written in future*//", + + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Allow a mudskipper to dig a burrow to do some weird flailing or something.", + }, + getMentor: {}, + }, + + + + }; SharkGame.HomeActionCategories = { @@ -4673,6 +4788,7 @@ SharkGame.HomeActionCategories = { "getBillfishExplorer", "getBillfishMechanic", "getStormgoer", + "getMentor", ], }, From de0454b65ad719d18ce786da627e92c12bb90356 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 17 Dec 2025 17:09:11 +0400 Subject: [PATCH 013/152] Added sea grass to the Shore worldtype --- js/data/worldtypes.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index a2c82781..b1cf1e5b 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -364,10 +364,10 @@ SharkGame.WorldTypes = { vagueLongDesc: "This place is so shallow.", longDesc: "A lapping, sandy ocean, creeping upon the shores.", missing: ["kelpstuff"], - present: ["mudskipper", "driftwood", "hardbark", "coral"], + present: ["mudskipper", "driftwood", "hardbark", "coral", "seagrass"], tip: "Not all is as it seems. Respect the brown fish that survive the beyond.", }, - entry: "You enter a low-strung turquoise sea, all your memory a shade.", + entry: "You enter a low-strung sandy sea, but the barrage of many grains scraping your lungs distracts you.", style: "default", includedResources: [ "basics", @@ -380,7 +380,7 @@ SharkGame.WorldTypes = { "sharkmachines", "driftwood", "mudskipperpuppets"], - absentResources: ["kelp"], + absentResources: ["kelp", "seaApple"], modifiers: [ { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1 } { type: "multiplier", modifier: "planetaryResourceBoost", resource: "sand", amount: 2.5 } From 4ea2bd880c8293a3eb4cd953fb93f0564751121c Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 17 Dec 2025 17:28:58 +0400 Subject: [PATCH 014/152] Added Puppet Mentor code to homeactions --- js/data/homeactions.js | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 8dd36443..e27d4767 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4611,6 +4611,9 @@ SharkGame.HomeActions = { catchFish: {}, debugButton: {}, + // PROCESSING //////////////////////////////////// + seagrasstoScience: {}, + // MAKE ADVANCED RESOURCES /////////////////////// transmuteSharkonium: {}, coatHardbark: { @@ -4652,9 +4655,9 @@ SharkGame.HomeActions = { }, // BUY ANIMALS ///////////////////////////////// - getShark: {}, - getManta: {}, - getCrab: {}, + getShark: {}, //end of creature code + getManta: {}, //end of creature code + getCrab: {}, //end of creature code getMudskipper: { name: "Liberate mudskipper", effect: { @@ -4685,7 +4688,7 @@ SharkGame.HomeActions = { "What, they think we’re gonna eat them?", ], helpText: "Liberate a mudskipper from its boring old life and command it to retrieve driftwood for you.", - }, + }, //end of creature code // MUDSKIPPER JOBS /////////////////////////// getBurrow: { @@ -4715,8 +4718,35 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Allow a mudskipper to dig a burrow to do some weird flailing or something.", + }, //end of creature code + getMentor: { + name: "Train mudskipper mentor", + effect: { + resource: { + mentor: 1, + }, + }, + cost: [ + { resource: "mudskipper", costFunction: "constant", priceIncrease: 3 }, + { resource: "science", costFunction: "linear", priceIncrease: 5 }, + { resource: "hardbark", costFunction: "linear", priceIncrease: 4 }, + ], + max: "mentor", + prereq: { + resource: { + mudskipper: 1, + }, + upgrade: ["puppetTeaching"], + }, + outcomes: [ + "//*to be written in future*//", + + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Teach a mudskipper techniques on puppet work, so that it may pass on its knowledge.", }, - getMentor: {}, }, From cf1ff8ec4f6502aa5567d85284766da74548c1c9 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 17 Dec 2025 17:38:29 +0400 Subject: [PATCH 015/152] Added Puppet Mentor multiplication code (w/ placeholder) --- js/data/resourcetable.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 169d878a..f4ae056d 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1354,6 +1354,11 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { fishMachine: 0.01, }, }, + mentor: { + multiply: { + puppetPlaceholder: 0.05 + }, + }, // cool tooltip test crab /* crab: { exponentiate: { From f9ce6a8ae79d474ffb19b2bb36dc72c5a3b104eb Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Mon, 22 Dec 2025 11:49:43 +0400 Subject: [PATCH 016/152] Removed Planter Crabs from the Shore worldtype I inputted crab and brood as individuals to avoid any possible glitches. --- js/data/worldtypes.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index b1cf1e5b..a1544401 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -363,7 +363,7 @@ SharkGame.WorldTypes = { foresight: { vagueLongDesc: "This place is so shallow.", longDesc: "A lapping, sandy ocean, creeping upon the shores.", - missing: ["kelpstuff"], + missing: ["kelpstuff", "planter"], present: ["mudskipper", "driftwood", "hardbark", "coral", "seagrass"], tip: "Not all is as it seems. Respect the brown fish that survive the beyond.", }, @@ -374,7 +374,8 @@ SharkGame.WorldTypes = { "coral", "sharks", "rays", - "crabs", + "crab", + "brood", "mudskippers", "basicmaterials", "sharkmachines", From 7b7f87f9e23c83d5c95ab1a4f762698c8029d6a4 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Mon, 22 Dec 2025 11:59:46 +0400 Subject: [PATCH 017/152] Saved some stuff --- js/data/resourcetable.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index f4ae056d..3e91bcf9 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -23,6 +23,8 @@ SharkGame.ResourceTable = { switch (world.worldType) { case "volcanic": return "vents"; + case "shore": + return "the sandstorm"; case "tempestuous": return "the storm"; default: @@ -33,6 +35,8 @@ SharkGame.ResourceTable = { switch (world.worldType) { case "volcanic": return "vents"; + case "shore": + return "the sandstorm"; case "tempestuous": return "the storm"; default: @@ -877,6 +881,22 @@ SharkGame.ResourceTable = { color: "#CC6600", value: 2000, }, + + caracara: { + name: "caracaras", + singleName: "caracara", + desc: "Prideful denizens of the beyond, harnessing sky like water.", + color: "#FFFFFF", + value: 3000, + }, + + roughSand: { + name: "rough sand", + singleName: "rough sand", + desc: "Jagged grains that dig into our flesh.", + color: "#FFFFFF", + value: -100, + }, // SHROUDED @@ -1335,6 +1355,7 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { brood: -0.001, }, }, + roughSand: {}, tar: { exponentiate: { fishMachine: 0.99, @@ -1453,7 +1474,7 @@ SharkGame.ResourceCategories = { harmful: { name: "Harmful", disposeMessage: ["Oh you'd like that, wouldn't you."], - resources: ["tar", "ice"], + resources: ["tar", "ice", "roughSand"], }, scientific: { name: "Science", From d9e2ebbfc43cd1c2c5bea1aa099112dd2324b094 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Mon, 22 Dec 2025 12:57:43 +0400 Subject: [PATCH 018/152] Update Rough Sand --- js/data/resourcetable.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 3e91bcf9..aed4fb83 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -887,6 +887,7 @@ SharkGame.ResourceTable = { singleName: "caracara", desc: "Prideful denizens of the beyond, harnessing sky like water.", color: "#FFFFFF", + income: {}, value: 3000, }, From 7ebb0a640210deff25384394b25c5489e6813e76 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Mon, 22 Dec 2025 12:59:14 +0400 Subject: [PATCH 019/152] Added Rough Sand income modifier --- js/data/worldtypes.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index a1544401..d6fd0fe0 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -385,6 +385,7 @@ SharkGame.WorldTypes = { modifiers: [ { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1 } { type: "multiplier", modifier: "planetaryResourceBoost", resource: "sand", amount: 2.5 } + { type: "multiplier", modifier: "planetaryIncome", resource: "roughSand", amount: 1 }, ], gateType: "slots", gateCosts: { From cae692f69c6cc4e8f5bbc6dfcc871bd391fc4b55 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Tue, 23 Dec 2025 19:04:26 +0400 Subject: [PATCH 020/152] Added some fun facts for the Shore world! --- js/facts.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/js/facts.js b/js/facts.js index d806c4f5..7b37abfa 100644 --- a/js/facts.js +++ b/js/facts.js @@ -93,6 +93,9 @@ SharkGame.FunFacts = { tempestuous: { messages: ["'Tempestuous' does not mean stormy. It means emotionally turbulent. But it's close enough."], }, + shore: { + messages: [], + }, }, resourceBased: { @@ -185,6 +188,12 @@ SharkGame.FunFacts = { "Swordfish are not a group of fish, they are a single species: Xiphias gladius.", "Swordfish, spearfish, and marlins are part of a larger group of fish called billfish (the group featured in this game), of which there are only 12 species.", ], + mudskipper: [], + caracara: [ + "Yes, I know they're birds. It was suggested that they could be replaced with starfish, but people didn't like that.", + "There are multiple species of caracara in real life, but the only one here is the striated caracara, because it's the smartest.", + "It is is pronounced KA-ruh-KAH-ruh, not KA-ruh-KA-ruh.", + ], seaApple: [ "Sea apples are a type of sea cucumber. They feed on debris and detritus.", "Sea apples are in no way actually attracted to kelp. The apples in this game are weird.", @@ -219,6 +228,13 @@ SharkGame.FunFacts = { "Calcinium is a very versatile material. Cooled quickly, it is a brittle ceramic - but cooled slowly, it's a rigid plastic. The lobsters make use of both methods.", "While calcinium looks like meringue, it most probably doesn't taste anything like.", ], + hardbark: [ + "To a human, hardbark looks like a dark blue stick covered in a thick layer of light-blue-tinted resin or glass. To the frenzy, it looks like a shiny rod of wood.", + "Hardbark is actually quite strong, courtesy of the crystal it's coated in. It clinks like glass.", + "No, hardbark does not taste like a blue raspberry lollipop, and NO, YOU CANNOT EAT IT--", + "You. Do. Not. Know. HOW MANY TYPOS. I have made. Trying to spell. Hardbark.", + "You might be wondering why the stick doesn't appear brown. That's because its developer couldn't find a mix between brown and light blue.", + ], laser: [ "Sharks with lasers were overdone, okay? 'Laser ray' is a pun, so it's obviously superior.", "Sand probably does not actually fuse into magic crystals. Unless you count glass.", @@ -262,6 +278,7 @@ SharkGame.FunFacts = { "In the real world, the ocean floor is not always sand. The deep ocean usually has much finer sediment.", "Sand gets transported very long distances by ocean currents. The longer it takes to travel to its destination beach, the finer the sand will be.", ], + driftwood: [], ancientPart: [ "What do they do? We still aren't sure.", "These parts would probably remind a person of train parts. To a shark, they just look like nothing.", From 91b2ba87f2045b8e2e230f4c04ac55ce3e7a9c04 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Tue, 23 Dec 2025 20:40:28 +0400 Subject: [PATCH 021/152] Added Shore Puppets (and caracara categories) --- js/data/resourcetable.js | 69 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 64 insertions(+), 5 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index aed4fb83..7189968b 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -843,7 +843,7 @@ SharkGame.ResourceTable = { income: { driftwood: 0.5, }, - jobs: ["burrow"], + jobs: ["burrow", "mentor"], value: 500, //(what does this mean?) }, @@ -887,10 +887,58 @@ SharkGame.ResourceTable = { singleName: "caracara", desc: "Prideful denizens of the beyond, harnessing sky like water.", color: "#FFFFFF", - income: {}, + income: { + crystal: 1, + }, value: 3000, }, + coralCollector: { + name: "coral collectors", + singleName: "coral collector", + desc: "Crablike puppets that saw at the coral with serrated claws.", + color: "#FFFFFF", + income: { + coral: 3 + }, + value: 3500, + }, + + driftwoodSnarer: { + name: "driftwood snarers", + singleName: "driftwood snarer", + desc: "Drifting, raylike puppets collecting driftwood in their seagrass nets.", + color: "#FFFFFF", + income: { + driftwood: 2 + }, + value: 3500, + }, + + hardbarkSmith: { + name: "hardbarm smiths", + singleName: "hardbark smith", + desc: "Clawed, orblike puppets that dip wood in molten crystal.", + color: "#FFFFFF", + income: { + hardbark: 2, + crystal: -2 + }, + value: 3500, + }, + + shoreQueller: { + name: "coral collectors", + singleName: "coral collector", + desc: "blanklike puppets that mark shore borders with seagrass.", + color: "#FFFFFF", + income: { + seagrass: 3, + crystal: 3, + }, + value: 3500, + }, + roughSand: { name: "rough sand", singleName: "rough sand", @@ -1378,7 +1426,10 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { }, mentor: { multiply: { - puppetPlaceholder: 0.05 + coralCollector: 0.05, + hardbarkSmith: 0.05, + driftwoodSnarer: 0.05, + shoreQueller: 0.05, }, }, // cool tooltip test crab @@ -1519,7 +1570,7 @@ SharkGame.ResourceCategories = { "Was it something they said?", "Are you happy with what you've done?", ], - resources: ["shark", "ray", "crab", "shrimp", "lobster", "dolphin", "whale", "chimaera", "octopus", "eel", "squid", "urchin", "billfish", "mudskipper"], + resources: ["shark", "ray", "crab", "shrimp", "lobster", "dolphin", "whale", "chimaera", "octopus", "eel", "squid", "urchin", "billfish", "mudskipper", "caracara"], }, animals: { name: "Animals", @@ -1650,6 +1701,10 @@ SharkGame.ResourceCategories = { // "coalescer", // "crusher", // "pulverizer", + "coralCollector", + "hardbarkSmith", + "shoreQueller", + "driftwoodSnarer", ], }, places: { @@ -1731,6 +1786,10 @@ SharkGame.InternalCategories = { name: "Mudskippers", resources: ["mudskipper", "burrow", "mentor"], }, + caracaras: { + name: "Caracaras", + resources: ["caracara"], + }, sharkmachines: { name: "Shark Machines", resources: ["sharkonium", "fishMachine", "sandDigger", "crystalMiner", "skimmer", "autoTransmuter"], @@ -1749,7 +1808,7 @@ SharkGame.InternalCategories = { }, mudskipperpuppets: { name: "Mudskipper Puppets", - resources: ["hardbark"], + resources: ["hardbark", "coralCollector", "hardbarkSmith", "driftwoodSnarer", "shoreQueller"], }, basicmaterials: { resources: ["fish", "sand", "crystal", "science", "junk"], From 8deb544fad88453bd5a22fbc6023caad26ee1cbf Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Tue, 23 Dec 2025 20:41:37 +0400 Subject: [PATCH 022/152] Added caracaras to worldtype code --- js/data/worldtypes.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index d6fd0fe0..f06196db 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -364,7 +364,7 @@ SharkGame.WorldTypes = { vagueLongDesc: "This place is so shallow.", longDesc: "A lapping, sandy ocean, creeping upon the shores.", missing: ["kelpstuff", "planter"], - present: ["mudskipper", "driftwood", "hardbark", "coral", "seagrass"], + present: ["mudskipper", "driftwood", "hardbark", "coral", "seagrass", "caracaras"], tip: "Not all is as it seems. Respect the brown fish that survive the beyond.", }, entry: "You enter a low-strung sandy sea, but the barrage of many grains scraping your lungs distracts you.", @@ -377,6 +377,7 @@ SharkGame.WorldTypes = { "crab", "brood", "mudskippers", + "caracaras", "basicmaterials", "sharkmachines", "driftwood", From feb5abbd460457c878ad3661b90fbe6a8ad1d7a6 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Tue, 23 Dec 2025 21:44:26 +0400 Subject: [PATCH 023/152] Added two new Driftwood facts courtesy of NAD NAD = NOT a Dolphin --- js/facts.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/facts.js b/js/facts.js index 7b37abfa..b8323b62 100644 --- a/js/facts.js +++ b/js/facts.js @@ -278,7 +278,10 @@ SharkGame.FunFacts = { "In the real world, the ocean floor is not always sand. The deep ocean usually has much finer sediment.", "Sand gets transported very long distances by ocean currents. The longer it takes to travel to its destination beach, the finer the sand will be.", ], - driftwood: [], + driftwood: [ + "According to Norse mythology, the first two humans were made out of driftwood. Whatever Norse is. And humans.", + "The frenzy never burns driftwood as fuel, as the combustion releases toxic and long-lasting substances into the air.", + ], ancientPart: [ "What do they do? We still aren't sure.", "These parts would probably remind a person of train parts. To a shark, they just look like nothing.", From b9d5668e31e22347d249cf88befa11771890c7b5 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 24 Dec 2025 11:50:46 +0400 Subject: [PATCH 024/152] Added some new browser tab names --- js/main.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/main.js b/js/main.js index a837d090..b9781d50 100644 --- a/js/main.js +++ b/js/main.js @@ -104,12 +104,15 @@ $.extend(SharkGame, { "Curse of the Shark", "Have I Played These Sharks Before?", "Hollow Shark: Shark Song", + "Last Shark Standing", + "Sharkjago: Masters of Sharkjitsu", + "Shark: Galactic Ad-shark-tures", //this was a bad spin on 'Spore: Galactic Adventures' --ThreeCrabs ], GAME_NAME: null, ACTUAL_GAME_NAME: "Shark Game", VERSION: "20250127a", ORIGINAL_VERSION: 0.71, - VERSION_NAME: "The Tempetuous Update", + VERSION_NAME: "The Shore Update", //Put "The Chaotic Shore Update" if both oceans come out at around the same time - ThreeCrabs EPSILON: 1e-6, // floating point comparison is a joy BIGGEST_SAFE_NUMBER: 1000000000000, MAX: 1e300, From 1a3a37cc02c29ddb38db59bde4f0a0dbc8a73ec2 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 24 Dec 2025 12:14:00 +0400 Subject: [PATCH 025/152] Added Shore-dependent Gateway messages They will probably change ;D --- js/gateway.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/js/gateway.js b/js/gateway.js index 090f7c23..539417c6 100644 --- a/js/gateway.js +++ b/js/gateway.js @@ -6,7 +6,7 @@ SharkGame.Gateway = { transitioning: false, selectedWorld: "", - allowedWorlds: ["abandoned", "haven", "frigid", "shrouded", "marine", "volcanic", "tempestuous"], + allowedWorlds: ["abandoned", "haven", "frigid", "shrouded", "marine", "volcanic", "tempestuous", "shore"], completedWorlds: [], @@ -1228,6 +1228,9 @@ SharkGame.Gateway.PresenceFeelings = { algae: "something slimy?", seagrass: "some plants?", billfish: "resolute survivalists?", + driftwood: "floaty things?", + mudskipper: "unusual prey?", + caracara: "otherworldly soarers?", }; SharkGame.Gateway.Messages = { @@ -1250,7 +1253,7 @@ SharkGame.Gateway.Messages = { "How quickly do you travel through worlds?", "You are becoming familiar with this.", "Back so soon?", - "Welcome back, to the space between spaces.", + "Welcome back, to the space between spaces.", //THE WORLD BETWEEN WORLDS FROM STAR WARS NO WAY --ThreeCrabs ], }, { @@ -1338,6 +1341,15 @@ SharkGame.Gateway.Messages = { "Do you wonder who the squid look up to?", "Do you wonder who built the great machine?", ], + shore: [ + "Who do you think the mudskippers told stories about?", + "Do you wonder who built the safehold?", + "How did you find the birds? Strange? Prideful? Or... kindred?", + "The puppets... do you see what they do when no-one is looking?", + "The mudskippers were not as safe before you came.", + "Who do you think appeared in caracara legends?", + "You have proven endurance by outlasting the torturous storm.", + ], }, loss: [ "No matter. You will succeed in the future, no doubt.", From b62929fc88d52a4274f8905bb92c6b42fd2e99b9 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 24 Dec 2025 12:56:59 +0400 Subject: [PATCH 026/152] Added more suggested facts Courtesy of NOT a Dolphin on Discord. --- js/facts.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/js/facts.js b/js/facts.js index b8323b62..091146cc 100644 --- a/js/facts.js +++ b/js/facts.js @@ -188,7 +188,13 @@ SharkGame.FunFacts = { "Swordfish are not a group of fish, they are a single species: Xiphias gladius.", "Swordfish, spearfish, and marlins are part of a larger group of fish called billfish (the group featured in this game), of which there are only 12 species.", ], - mudskipper: [], + mudskipper: [ + "Unlike sharks and rays, mudskippers have bones.", + "The mudskipper species Periophthalmus Modestus takes care of their eggs in air pockets inside mud burrows, and floods the burrow to hatch them.", + "Some species of muskipper eat debris, making them detritivores, while other species are carnivores.", + "After a mudskipper lays their eggs, the mother normally leaves them to be guarded by the father.", + "Much like amphibians, mudskippers can breathe through their skin when wet.", + ], caracara: [ "Yes, I know they're birds. It was suggested that they could be replaced with starfish, but people didn't like that.", "There are multiple species of caracara in real life, but the only one here is the striated caracara, because it's the smartest.", @@ -281,6 +287,8 @@ SharkGame.FunFacts = { driftwood: [ "According to Norse mythology, the first two humans were made out of driftwood. Whatever Norse is. And humans.", "The frenzy never burns driftwood as fuel, as the combustion releases toxic and long-lasting substances into the air.", + "Driftwood is often used by several animals, both aquatic and terrestrial, as shelter and food.", + "In the beyond, driftwood can be found in abundance as simple 'wood', but only driftwood has the right composition for hardbark.", //according to the caracaras. ], ancientPart: [ "What do they do? We still aren't sure.", From 034a8424a6b0b2c30e41d0fc332b2ebf313b6e99 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 24 Dec 2025 17:47:49 +0400 Subject: [PATCH 027/152] Finally added the Stone Ocean brackets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit My god that was so AAAAAAAAÆEEEEEEEEEEEE— --- js/data/homemessages.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/js/data/homemessages.js b/js/data/homemessages.js index e3f57386..f6bf48c0 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -516,10 +516,11 @@ SharkGame.HomeMessages = { }, ], /* - { + stone: [ + { message: "The jagged seafloor looks ancient, yet pristine.
Sponges thrive in great numbers on the rocks.", - }, - */ + }, + ],*/ }, }; From 6a08307e3bd9f34d4494ea6a882f7c8ecc8167ea Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 24 Dec 2025 21:26:42 +0400 Subject: [PATCH 028/152] Added to the 'Saved for Later' list + put it higher --- js/data/resourcetable.js | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 7189968b..77303cc9 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1,5 +1,24 @@ "use strict"; SharkGame.ResourceTable = { + + // SAVED FOR LATER + + coralglass: { //machine-making material + name: "coralglass", + singleName: "coralglass", + desc: "null", + color: "#FDD5B4", + value: 70, + }, + + starfish: { //frenzy member + name: "starfish", + singleName: "starfish", + desc: "Obliviously cute - as long as you don't see their mouths.", + color: "#C2754A", + value: 3000 + }, + // SPECIAL numen: { @@ -538,16 +557,6 @@ SharkGame.ResourceTable = { value: 1500, }, - // SAVED FOR LATER - - coralglass: { - name: "coralglass", - singleName: "coralglass", - desc: "null", - color: "#FDD5B4", - value: 70, - }, - // volcanic shrimp: { From 963b85d67afa18897df871d505818918cf7dc7ac Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 24 Dec 2025 21:50:00 +0400 Subject: [PATCH 029/152] =?UTF-8?q?Added=20credits=20to=20the=20=E2=80=98s?= =?UTF-8?q?aved=20for=20later=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/data/resourcetable.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 77303cc9..ce2fc7cd 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -3,7 +3,7 @@ SharkGame.ResourceTable = { // SAVED FOR LATER - coralglass: { //machine-making material + coralglass: { //machine-making material; archived from original game -- ThreeCrabs name: "coralglass", singleName: "coralglass", desc: "null", @@ -11,7 +11,7 @@ SharkGame.ResourceTable = { value: 70, }, - starfish: { //frenzy member + starfish: { //frenzy member; courtesy of my great irl friend -- ThreeCrabs name: "starfish", singleName: "starfish", desc: "Obliviously cute - as long as you don't see their mouths.", From 1cf95940757854de0ba10073841ea7896e666057 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Thu, 25 Dec 2025 19:15:14 +0400 Subject: [PATCH 030/152] Added some new Shore messages --- js/data/homemessages.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/js/data/homemessages.js b/js/data/homemessages.js index f6bf48c0..12ddf010 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -515,6 +515,29 @@ SharkGame.HomeMessages = { message: "A wave of heat washes over you, and the dingy complex comes back to life. The gate turns on.", }, ], + + shore: [ + { + name: "shore-default", + message: "The surface of the water is painfully close, yet it stretches vast.
Looking into the distance, that seems the least of your problems.", + }, + { + name: "shore-sandstorm-entry", + unlock: { upgrade: ["murkAssessment"] }, + message: "The sandstorm sends thousands of grains of rough sand digging into your flesh. This was a bad idea.", + }, + { + name: "shore-sandstorm-escape-attempt", + unlock: { upgrade: ["fleeBarrage"] }, + message: "The sandstorm has stretched out endlessly. No matter how far you backtrack, it is there." + }, + { + name: "shore-sandstorm-escape-attempt-the-sequel", + unlock: { upgrade: ["justPushFurtherLol"] }, + message: "At last, by going further into the sandstorm, you burst into a clear space of calm. But a wall of sand blocks your path.", + }, + ], + /* stone: [ { From 531888c7c7c86516e9cb45011771364791ad9f85 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Fri, 26 Dec 2025 13:03:27 +0400 Subject: [PATCH 031/152] =?UTF-8?q?I=20think=20I=E2=80=99ve=20completed=20?= =?UTF-8?q?the=20Shore=20worldtype=20for=20now!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/data/worldtypes.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index f06196db..9ad9fb13 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -367,11 +367,12 @@ SharkGame.WorldTypes = { present: ["mudskipper", "driftwood", "hardbark", "coral", "seagrass", "caracaras"], tip: "Not all is as it seems. Respect the brown fish that survive the beyond.", }, - entry: "You enter a low-strung sandy sea, but the barrage of many grains scraping your lungs distracts you.", - style: "default", + entry: "You enter a low-strung sandy sea, just over tall enough for you to fit. It's clear water on all sides, except for behind you...", + style: "shore", includedResources: [ "basics", "coral", + "seagrass", "sharks", "rays", "crab", @@ -390,12 +391,13 @@ SharkGame.WorldTypes = { ], gateType: "slots", gateCosts: { - fish: 1, - sand: 1, - crystal: 1, - driftwood: 1, - coral: 1, - hardbark: 1, + fish: 1e5, + crystal: 2e5, + driftwood: 5e3, + coral: 3e5, + seagrass: 2e5, + hardbark: 2e5, + gatemasterPuppet: 1, }, }, stone: { From 3271b3263a66a126295efe85060935b9b8479fac Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Fri, 26 Dec 2025 19:53:42 +0400 Subject: [PATCH 032/152] Added Caracara specialists to resourcetable --- js/data/resourcetable.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index ce2fc7cd..0996d073 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -899,9 +899,30 @@ SharkGame.ResourceTable = { income: { crystal: 1, }, + jobs: ["retrievalDuo", "connoisseur"], value: 3000, }, + retrievalDuo: { + name: "retrieval duos", + singleName: "retrieval duo", + desc: "A huffy pair of searchers, venturing further than ever before.", + color: "#FFFFFF", + value: 2000 + }, + + connoisseur: { + name: "caracara connoisseurs", + singleName: "caracara connoisseur", + desc: "Uppity collectors of washed-up seagrass and coral.", + color: "#FFFFFF", + income: { + seagrass: 0.5, + coral: 0.5, + }, + value: 2000 + }, + coralCollector: { name: "coral collectors", singleName: "coral collector", @@ -939,7 +960,7 @@ SharkGame.ResourceTable = { shoreQueller: { name: "coral collectors", singleName: "coral collector", - desc: "blanklike puppets that mark shore borders with seagrass.", + desc: "Long puppets that mark shore borders with seagrass.", color: "#FFFFFF", income: { seagrass: 3, @@ -1499,6 +1520,9 @@ SharkGame.ResourceIncomeAffectorsOriginal = { algae: 0.02, }, }, + retrievalDuo: { + multiply: { + driftwood: 0.05, /* shoveler: { multiply: { sand: 0.05, @@ -1797,7 +1821,7 @@ SharkGame.InternalCategories = { }, caracaras: { name: "Caracaras", - resources: ["caracara"], + resources: ["caracara", "retrievalDuo", "connoisseur"], }, sharkmachines: { name: "Shark Machines", From 0b613b5d0572dbb51a21246ee1299078e43610f8 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Fri, 26 Dec 2025 22:00:49 +0400 Subject: [PATCH 033/152] Update resourcetable.js --- js/data/resourcetable.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 0996d073..4cb23111 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -334,7 +334,7 @@ SharkGame.ResourceTable = { crystal: 0.02, coral: 0.01, }, - jobs: ["planter", "brood", "collector", "researcher", "curiousCrab", "seabedStripper"], + jobs: ["planter", "brood", "collector", "researcher", "curiousCrab", "seabedStripper", "gardener"], value: 1000, }, @@ -843,6 +843,8 @@ SharkGame.ResourceTable = { }, // SHORE + + gardener: {}, mudskipper: { name: "mudskippers", @@ -946,7 +948,7 @@ SharkGame.ResourceTable = { }, hardbarkSmith: { - name: "hardbarm smiths", + name: "hardbark smiths", singleName: "hardbark smith", desc: "Clawed, orblike puppets that dip wood in molten crystal.", color: "#FFFFFF", @@ -960,7 +962,7 @@ SharkGame.ResourceTable = { shoreQueller: { name: "coral collectors", singleName: "coral collector", - desc: "Long puppets that mark shore borders with seagrass.", + desc: "Wormlike puppets marking shore borders with seagrass - and crystallisng the rest.", color: "#FFFFFF", income: { seagrass: 3, @@ -1703,6 +1705,9 @@ SharkGame.ResourceCategories = { // "miller", // "rockLobster" "mentor", + "retrievalDuo", + "connoisseur", + "gardener", ], }, machines: { From 53ffd1967b06f8e60602402ef85589f120e05964 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Sat, 27 Dec 2025 00:24:09 +0400 Subject: [PATCH 034/152] Corrected stuff --- js/data/resourcetable.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 4cb23111..a495550f 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -334,7 +334,7 @@ SharkGame.ResourceTable = { crystal: 0.02, coral: 0.01, }, - jobs: ["planter", "brood", "collector", "researcher", "curiousCrab", "seabedStripper", "gardener"], + jobs: ["planter", "brood", "collector", "researcher", "curiousCrab", "seabedStripper"], value: 1000, }, @@ -844,7 +844,17 @@ SharkGame.ResourceTable = { // SHORE - gardener: {}, + gardener: { + name: "crab gardeners", + singleName: "crab gardener", + color: "#FFFFFF", + desc: "Devotion and solace.", + income: { + coral: 0.5, + seagrass: 0.5, + }, + value: 1000, + }, mudskipper: { name: "mudskippers", @@ -1525,6 +1535,8 @@ SharkGame.ResourceIncomeAffectorsOriginal = { retrievalDuo: { multiply: { driftwood: 0.05, + }, + }, /* shoveler: { multiply: { sand: 0.05, From 768bc0372a07baab4f720906fef7223484d676aa Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Sun, 28 Dec 2025 14:48:39 +0400 Subject: [PATCH 035/152] =?UTF-8?q?Changed=20=E2=80=98gardener=E2=80=99=20?= =?UTF-8?q?to=20=E2=80=98stabilizer=E2=80=99=20+=20added=20hex=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/data/resourcetable.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index a495550f..26fe71e6 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -844,11 +844,11 @@ SharkGame.ResourceTable = { // SHORE - gardener: { - name: "crab gardeners", - singleName: "crab gardener", - color: "#FFFFFF", - desc: "Devotion and solace.", + stabilizer: { //my inner british english speaker is screaming blue murder --ThreeCrabs + name: "stabilizer crabs", + singleName: "stabilizer crab", + color: "#339966", + desc: "Devotion and dedication.", income: { coral: 0.5, seagrass: 0.5, @@ -865,7 +865,7 @@ SharkGame.ResourceTable = { driftwood: 0.5, }, jobs: ["burrow", "mentor"], - value: 500, //(what does this mean?) + value: 500, //(what does this mean?) --ThreeCrabs }, burrow: { From 0a812990f58c98c97c49b9677b195bac8c713796 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Sun, 28 Dec 2025 15:07:28 +0400 Subject: [PATCH 036/152] Added Shore hex codes --- js/data/resourcetable.js | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 26fe71e6..76d350b7 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -907,7 +907,7 @@ SharkGame.ResourceTable = { name: "caracaras", singleName: "caracara", desc: "Prideful denizens of the beyond, harnessing sky like water.", - color: "#FFFFFF", + color: "#604020", income: { crystal: 1, }, @@ -919,7 +919,7 @@ SharkGame.ResourceTable = { name: "retrieval duos", singleName: "retrieval duo", desc: "A huffy pair of searchers, venturing further than ever before.", - color: "#FFFFFF", + color: "#cc9966", value: 2000 }, @@ -927,7 +927,7 @@ SharkGame.ResourceTable = { name: "caracara connoisseurs", singleName: "caracara connoisseur", desc: "Uppity collectors of washed-up seagrass and coral.", - color: "#FFFFFF", + color: "#669900", income: { seagrass: 0.5, coral: 0.5, @@ -939,7 +939,7 @@ SharkGame.ResourceTable = { name: "coral collectors", singleName: "coral collector", desc: "Crablike puppets that saw at the coral with serrated claws.", - color: "#FFFFFF", + color: "#99004D", income: { coral: 3 }, @@ -950,7 +950,7 @@ SharkGame.ResourceTable = { name: "driftwood snarers", singleName: "driftwood snarer", desc: "Drifting, raylike puppets collecting driftwood in their seagrass nets.", - color: "#FFFFFF", + color: "#333300", income: { driftwood: 2 }, @@ -961,7 +961,7 @@ SharkGame.ResourceTable = { name: "hardbark smiths", singleName: "hardbark smith", desc: "Clawed, orblike puppets that dip wood in molten crystal.", - color: "#FFFFFF", + color: "#00004D", income: { hardbark: 2, crystal: -2 @@ -970,10 +970,10 @@ SharkGame.ResourceTable = { }, shoreQueller: { - name: "coral collectors", - singleName: "coral collector", + name: "shore quellers", + singleName: "shore queller", desc: "Wormlike puppets marking shore borders with seagrass - and crystallisng the rest.", - color: "#FFFFFF", + color: "#CCCC00", income: { seagrass: 3, crystal: 3, @@ -985,7 +985,7 @@ SharkGame.ResourceTable = { name: "rough sand", singleName: "rough sand", desc: "Jagged grains that dig into our flesh.", - color: "#FFFFFF", + color: "#CC9900", value: -100, }, @@ -1716,6 +1716,7 @@ SharkGame.ResourceCategories = { // "shoveler", // "miller", // "rockLobster" + "stabilizer", "mentor", "retrievalDuo", "connoisseur", From d6608feb2a212ea83ef241846c10c84ba761b398 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Sun, 28 Dec 2025 15:14:34 +0400 Subject: [PATCH 037/152] Sure hope this is the last Shore worldtype update --- js/data/worldtypes.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 9ad9fb13..feb505d8 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -363,8 +363,8 @@ SharkGame.WorldTypes = { foresight: { vagueLongDesc: "This place is so shallow.", longDesc: "A lapping, sandy ocean, creeping upon the shores.", - missing: ["kelpstuff", "planter"], - present: ["mudskipper", "driftwood", "hardbark", "coral", "seagrass", "caracaras"], + missing: ["kelp", "seaApple", "planter"], + present: ["mudskipper", "driftwood", "hardbark", "coral", "seagrass", "caracara"], tip: "Not all is as it seems. Respect the brown fish that survive the beyond.", }, entry: "You enter a low-strung sandy sea, just over tall enough for you to fit. It's clear water on all sides, except for behind you...", @@ -377,6 +377,7 @@ SharkGame.WorldTypes = { "rays", "crab", "brood", + "stabilizer", "mudskippers", "caracaras", "basicmaterials", From 6bc4912efe0fad22ee0c97d5f94e35b4b67a9be9 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Sun, 28 Dec 2025 19:27:59 +0400 Subject: [PATCH 038/152] Update homeactions.js --- js/data/homeactions.js | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index e27d4767..c7ebfa76 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4604,7 +4604,7 @@ SharkGame.HomeActions = { }, }, - //--------------------------------------------------- +//--------------------------------------------------- shore: { // MANUAL RESOURCE COLLECTION ///////////////////// @@ -4689,6 +4689,36 @@ SharkGame.HomeActions = { ], helpText: "Liberate a mudskipper from its boring old life and command it to retrieve driftwood for you.", }, //end of creature code + getCaracara: { + name: "Procure caracara", + effect: { + resource: { + caracara: 1, + }, + }, + cost: [ + { resource: "driftwood", costFunction: "linear", priceIncrease: 5 }, + ], + max: "caracara", + prereq: { + upgrade: ["raiderTruce"], + }, + outcomes: [ + "A striated caracara joins you.", + "A caracara awaits your command. Haughtily.", + "The caracara flies off with a task.", + "It gives you a strange look before it leaves.", + "The caracara accidentally sheds a feather as it lifts off.", + ], + multiOutcomes: [ + "They await you in flocks.", + "They blot out the sun.", + "They cast a shadow upon all as they fly.", + "Their presence commands respect from all but us.", + "You know what, they're kinda like sharks when you think about it." + ], + helpText: "Convince a caracara from the surface to retrieve crystals.", + }, //end of creature code // MUDSKIPPER JOBS /////////////////////////// getBurrow: { @@ -4718,7 +4748,7 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Allow a mudskipper to dig a burrow to do some weird flailing or something.", - }, //end of creature code + }, //end of job code getMentor: { name: "Train mudskipper mentor", effect: { @@ -4746,6 +4776,10 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Teach a mudskipper techniques on puppet work, so that it may pass on its knowledge.", + + // CARACARA JOBS /////////////////////////// + getRetrievalDuo: {}, + getConnoisseur: {}, }, }, From d78e221de3bbbf205c161668a50b47ee0af09879 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 31 Dec 2025 19:50:41 +0400 Subject: [PATCH 039/152] Added a bunch of stuff for Shore --- js/data/homeactions.js | 181 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 174 insertions(+), 7 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index c7ebfa76..efaed259 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4607,7 +4607,7 @@ SharkGame.HomeActions = { //--------------------------------------------------- shore: { - // MANUAL RESOURCE COLLECTION ///////////////////// + // FREEBIES ///////////////////// catchFish: {}, debugButton: {}, @@ -4757,8 +4757,8 @@ SharkGame.HomeActions = { }, }, cost: [ - { resource: "mudskipper", costFunction: "constant", priceIncrease: 3 }, - { resource: "science", costFunction: "linear", priceIncrease: 5 }, + { resource: "mudskipper", costFunction: "constant", priceIncrease: 1 }, + { resource: "science", costFunction: "linear", priceIncrease: 15 }, { resource: "hardbark", costFunction: "linear", priceIncrease: 4 }, ], max: "mentor", @@ -4776,12 +4776,171 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Teach a mudskipper techniques on puppet work, so that it may pass on its knowledge.", + }, //end of job code // CARACARA JOBS /////////////////////////// - getRetrievalDuo: {}, - getConnoisseur: {}, - }, - + getRetrievalDuo: { + name: "Pair retrieval duo", + effect: { + resource: { + retrievalDuo: 1, + }, + }, + cost: [ + { resource: "mudskipper", costFunction: "constant", priceIncrease: 1 }, + { resource: "caracara", costFunction: "linear", priceIncrease: 1 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 5 }, + ], + max: "retrievalDuo", + prereq: { + resource: { + caracara: 1, + mudskipper: 1 + }, + upgrade: ["beyondwalkerPairing"], + }, + outcomes: [ + "//*to be written in future*//", + + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Leave an armoured mudskipper on a platform for a caracara to take and search for driftwood.", + }, //end of job code + getConnoisseur: { + name: "Employ connoisseur", + effect: { + resource: { + connoisseur: 1, + }, + }, + cost: [ + { resource: "caracara", costFunction: "constant", priceIncrease: 1 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 5 }, + ], + max: "connoisseur", + prereq: { + resource: { + caracara: 1, + seagrass: 5, + }, + upgrade: ["seagrassAttention"], + }, + outcomes: [ + "//*to be written in future*//", + + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Get a caracara interested in seagrass to walk along shores laden with it.", + }, //end of job code + + // MUDSKIPPER PUPPETS ////////////////////// + getCoralCollector: { + name: "Assemble coral collector", + effect: { + resource: { + coralCollector: 1, + }, + }, + cost: [{ resource: "hardbark", costFunction: "linear", priceIncrease: 50 }], + max: "coralCollector", + prereq: { + resource: { + hardbark: 50, + }, + upgrade: ["puppetAssembly"], + }, + outcomes: [ + "//*to be written in future*//", + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Put together a crablike puppet to harvest coral with serrated claws.", + }, //end of machine code + getShoreQueller: { + name: "Assemble shore queller", + effect: { + resource: { + shoreQueller: 1, + }, + }, + cost: [ + { resource: "hardbark", costFunction: "linear", priceIncrease: 75 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 50 }, + ], + max: "shoreQueller", + prereq: { + resource: { + hardbark: 75, + }, + upgrade: ["puppetAssembly"], + }, + outcomes: [ + "//*to be written in future*//", + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Put together a wormlike puppet to plant seagrass and laser up rough sand.", + }, // end of machine code + getDriftwoodSnarer: { + name: "Assemble driftwood snarer", + effect: { + resource: { + driftwoodSnarer: 1, + }, + }, + cost: [ + { resource: "hardbark", costFunction: "linear", priceIncrease: 25 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 15 }, + ], + max: "driftwoodSnarer", + prereq: { + resource: { + hardbark: 25, + seagrass: 15, + }, + upgrade: ["puppetAssembly"], + }, + outcomes: [ + "//*to be written in future*//", + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Put together a raylike puppet to catch driftwood in a seagrass net.", + }, //end of machine code + getHardbarkSmith: { + name: "Assemble hardbark smith", + effect: { + resource: { + hardbarkSmith: 1, + }, + }, + cost: [ + { resource: "hardbark", costFunction: "linear", priceIncrease: 50 }, + { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, + ], + max: "hardbarkSmith", + prereq: { + resource: { + hardbark: 50, + sharkonium: 25, + }, + upgrade: ["puppetAssembly"], + }, + outcomes: [ + "//*to be written in future*//", + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Put together a clawed, orblike puppet to coat hardbark in a dish.", + }, //end of machine code }, @@ -4818,6 +4977,7 @@ SharkGame.HomeActionCategories = { "getUrchin", "getBillfish" "getMudskipper", + "getCaracara", ], }, @@ -4853,6 +5013,9 @@ SharkGame.HomeActionCategories = { "getBillfishMechanic", "getStormgoer", "getMentor", + "getConnoisseur", + "getStabilizer", + "getRetrievalDuo", ], }, @@ -4928,6 +5091,10 @@ SharkGame.HomeActionCategories = { "getSeabedStripper", "getCalciniumConverter", "getClamScavenger", + "geCoralCollector", + "getShoreQueller", + "getDriftwoodSnarer", + "getHardbarkSmith", ], }, From 1b9dce6fb674b0e4f6f710c8b7a75344b95a3884 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Wed, 31 Dec 2025 21:57:09 +0400 Subject: [PATCH 040/152] Added something? I hope it works --- js/data/homeactions.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index efaed259..16b090e3 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4878,6 +4878,7 @@ SharkGame.HomeActions = { hardbark: 75, }, upgrade: ["puppetAssembly"], + upgrade: ["laserRays"], }, outcomes: [ "//*to be written in future*//", From 8c23f32c99e8b26d4df361156a3dc1dd24ff4cfc Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Sat, 3 Jan 2026 15:54:31 +0400 Subject: [PATCH 041/152] Fixed and placeheld --- js/data/resourcetable.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 76d350b7..b952b6e9 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -981,6 +981,12 @@ SharkGame.ResourceTable = { value: 3500, }, + safeholdSentinel: {}, + + barrageBraver: {}, + + gatemasterPuppet: {}, + roughSand: { name: "rough sand", singleName: "rough sand", @@ -1720,7 +1726,7 @@ SharkGame.ResourceCategories = { "mentor", "retrievalDuo", "connoisseur", - "gardener", + "stabilizer", ], }, machines: { From 1bcb99616211d0821102ead53dc6a9fb6a5585ff Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Sat, 3 Jan 2026 15:59:24 +0400 Subject: [PATCH 042/152] Added Advanced Puppets to categories --- js/data/resourcetable.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index b952b6e9..8ef5b157 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1762,6 +1762,9 @@ SharkGame.ResourceCategories = { "hardbarkSmith", "shoreQueller", "driftwoodSnarer", + "safeholdSentinel", + "barrageBraver", + "gatemasterPuppet", ], }, places: { @@ -1865,7 +1868,7 @@ SharkGame.InternalCategories = { }, mudskipperpuppets: { name: "Mudskipper Puppets", - resources: ["hardbark", "coralCollector", "hardbarkSmith", "driftwoodSnarer", "shoreQueller"], + resources: ["hardbark", "coralCollector", "hardbarkSmith", "driftwoodSnarer", "shoreQueller", "safeholdSentinel", "barrageBraver", "gatemasterPuppet"], }, basicmaterials: { resources: ["fish", "sand", "crystal", "science", "junk"], From d1b4dcfe8d00892c46ff2dd5c893da42590300e6 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Sat, 3 Jan 2026 16:07:54 +0400 Subject: [PATCH 043/152] Added the lifelike three heehee --- js/data/homeactions.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 16b090e3..5375237e 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4942,6 +4942,11 @@ SharkGame.HomeActions = { ], helpText: "Put together a clawed, orblike puppet to coat hardbark in a dish.", }, //end of machine code + + // UNIQUE ////////////////////// + getSafeholdSentinel: {}, + getBarrageBraver: {}, + getGatemasterPuppet: {}, }, @@ -5106,6 +5111,11 @@ SharkGame.HomeActionCategories = { unique: { name: "Unique", - actions: ["getChorus"], + actions: [ + "getChorus", + "getSafeholdSentinel", + "getBarrageBraver", + "getGatemasterPuppet", + ], }, }; From 855a2ea60253aa54a8f8f98ab730e51bc01088d0 Mon Sep 17 00:00:00 2001 From: Three Crabs in a Trench Coat Date: Mon, 5 Jan 2026 20:55:57 +0400 Subject: [PATCH 044/152] I think I did a revolution --- js/data/resourcetable.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 8ef5b157..86419288 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1452,7 +1452,15 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { brood: -0.001, }, }, - roughSand: {}, + roughSand: { + multiply: { + stuff: -0.005, + }, + exponentiate: { + coral: -0.05, + seagrass: -0.05, + }, + }, tar: { exponentiate: { fishMachine: 0.99, From 75ebfadedb57e6c3f39744e9a38448d614872695 Mon Sep 17 00:00:00 2001 From: Three Eels in a Trench Coat Date: Tue, 6 Jan 2026 17:07:37 +0400 Subject: [PATCH 045/152] Fixed my name --- js/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/main.js b/js/main.js index b9781d50..c339d183 100644 --- a/js/main.js +++ b/js/main.js @@ -106,13 +106,13 @@ $.extend(SharkGame, { "Hollow Shark: Shark Song", "Last Shark Standing", "Sharkjago: Masters of Sharkjitsu", - "Shark: Galactic Ad-shark-tures", //this was a bad spin on 'Spore: Galactic Adventures' --ThreeCrabs + "Shark: Galactic Ad-shark-tures", //this was a bad spin on 'Spore: Galactic Adventures' --ThreeEels ], GAME_NAME: null, ACTUAL_GAME_NAME: "Shark Game", VERSION: "20250127a", ORIGINAL_VERSION: 0.71, - VERSION_NAME: "The Shore Update", //Put "The Chaotic Shore Update" if both oceans come out at around the same time - ThreeCrabs + VERSION_NAME: "The Shore Update", //Put "The Chaotic Shore Update" if both oceans come out at around the same time - ThreeEels EPSILON: 1e-6, // floating point comparison is a joy BIGGEST_SAFE_NUMBER: 1000000000000, MAX: 1e300, From 7cfd081dc6fe1bca21dae52d3f88e9b8c1581041 Mon Sep 17 00:00:00 2001 From: Three Eels in a Trench Coat Date: Tue, 6 Jan 2026 21:05:46 +0400 Subject: [PATCH 046/152] Matched stuff up with my new username --- js/gateway.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/gateway.js b/js/gateway.js index 539417c6..e53e20b3 100644 --- a/js/gateway.js +++ b/js/gateway.js @@ -1253,7 +1253,7 @@ SharkGame.Gateway.Messages = { "How quickly do you travel through worlds?", "You are becoming familiar with this.", "Back so soon?", - "Welcome back, to the space between spaces.", //THE WORLD BETWEEN WORLDS FROM STAR WARS NO WAY --ThreeCrabs + "Welcome back, to the space between spaces.", //THE WORLD BETWEEN WORLDS FROM STAR WARS NO WAY --ThreeEels ], }, { From dfbf5bd2042b57cb3f847f39308db0de2bd5fbd4 Mon Sep 17 00:00:00 2001 From: Three Eels in a Trench Coat Date: Wed, 7 Jan 2026 16:20:02 +0400 Subject: [PATCH 047/152] Matched name and added list --- js/data/resourcetable.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 86419288..c2624e9e 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -3,7 +3,7 @@ SharkGame.ResourceTable = { // SAVED FOR LATER - coralglass: { //machine-making material; archived from original game -- ThreeCrabs + coralglass: { //machine-making material; archived from original game -- ThreeEels name: "coralglass", singleName: "coralglass", desc: "null", @@ -11,7 +11,7 @@ SharkGame.ResourceTable = { value: 70, }, - starfish: { //frenzy member; courtesy of my great irl friend -- ThreeCrabs + starfish: { //frenzy member; courtesy of my great irl friend -- ThreeEels name: "starfish", singleName: "starfish", desc: "Obliviously cute - as long as you don't see their mouths.", @@ -1454,7 +1454,18 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { }, roughSand: { multiply: { - stuff: -0.005, + shark: -0.005, + ray: -0.005, + crab: -0.005, + mudskipper: -0.005, + nurse: -0.005, + scientist: -0.005, + maker: -0.005, + laser: -0.005, + brood: -0.005, + stabilizer: -0.005, + burrow: -0.005, + mentor: -0.005, }, exponentiate: { coral: -0.05, From 228a8bc162f9d8422c50ea30e5c8a6d7a8601f01 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 10 Jan 2026 17:58:34 +0400 Subject: [PATCH 048/152] Added seagrass farm + filled Advanced Puppets code + added intel --- js/data/resourcetable.js | 62 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index c2624e9e..e0eed80f 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -844,7 +844,7 @@ SharkGame.ResourceTable = { // SHORE - stabilizer: { //my inner british english speaker is screaming blue murder --ThreeCrabs + stabilizer: { //my inner british english speaker is screaming blue murder --ThreeEels name: "stabilizer crabs", singleName: "stabilizer crab", color: "#339966", @@ -895,6 +895,14 @@ SharkGame.ResourceTable = { value: 1500, }, + intel: { + name: "intel", + singleName: "intel", + desc: "What the Braver knows.", + color: "#FFFFFF", + value: 150, + }, + mentor: { name: "puppet mentors", singleName: "puppet mentor", @@ -981,11 +989,46 @@ SharkGame.ResourceTable = { value: 3500, }, - safeholdSentinel: {}, + safeholdSentinel: { + name: "Safehold Sentinel", //it's special. that's why it has caps. --ThreeEels + singleName: "Safehold Sentinel", + desc: "The warden of many arms.", + color: "#FFFFFF", + income: { + roughSand: -5.5, + }, + value: 1000, + }, - barrageBraver: {}, + barrageBraver: { + name: "Barrage Braver", + singleName: "Barrage Braver", + desc: "The courageous one.", + color: "#FFFFFF", + income: { + intel: 0.0001 + }, + value: 1000, + }, + + gatemasterPuppet: { + name: "Gatemaster", + singleName: "Gatemaster", + desc: "It oversees its children and its home.", + color: "#FFFFFF", + value: 2000, + }, - gatemasterPuppet: {}, + seagrassFarm: { + name: "seagrass farms", + singleName: "seagrass farm", + desc: "Flowing crops of many blades.", + color: "#FFFFFF", + income: { + seagrass: 1.5, + }, + value: 770, + }, roughSand: { name: "rough sand", @@ -1498,6 +1541,14 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { driftwoodSnarer: 0.05, shoreQueller: 0.05, }, + }, + gatemasterPuppet: { + multiply: { + coralCollector: 15, + hardbarkSmith: 15, + driftwoodSnarer: 15, + shoreQueller: 15, + }, }, // cool tooltip test crab /* crab: { @@ -1616,6 +1667,7 @@ SharkGame.ResourceCategories = { "chart", "map", // "knowledge", + "intel", ], }, magical: { @@ -1794,7 +1846,7 @@ SharkGame.ResourceCategories = { "The location has been barred.", "Alright everyone, pack it up! Get outta here!", ], - resources: ["spongeFarm", "coralFarm"], + resources: ["spongeFarm", "coralFarm", "seagrassFarm"], }, special: { name: "Special", From bd61d26e658dc809cfe9e3865d04f348dd499140 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 10 Jan 2026 18:10:17 +0400 Subject: [PATCH 049/152] Added Seagrass Farm --- js/data/homeactions.js | 50 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 5375237e..a217e853 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4332,6 +4332,7 @@ SharkGame.HomeActions = { "At least it's not gross.", "We would learn a lot more from these if they weren't so absolutely tiny.", ], + helpText: "Dissect seagrass flowers to further the cause of science. This is research, probably!", }, @@ -4944,9 +4945,50 @@ SharkGame.HomeActions = { }, //end of machine code // UNIQUE ////////////////////// - getSafeholdSentinel: {}, - getBarrageBraver: {}, - getGatemasterPuppet: {}, + getSafeholdSentinel: {}, //end of unique code + getBarrageBraver: {}, //end of unique code + getGatemasterPuppet: {}, //end of unique code + + // PLACES ///////////////////// + getSeagrassFarm: { + name: "Construct seagrass farm", + effect: { + resource: { + seagrassFarm: 1, + }, + }, + cost: [ + { resource: "seagrass", costFunction: "constant", priceIncrease: 1 }, + { + resource: "sand", + costFunction: "linear", + get priceIncrease() { + return SharkGame.Upgrades.purchased.includes("landReform") ? 50 : 250; + }, + }, + ], + max: "seagrassFarm", + prereq: { + upgrade: ["Agriculture"], + }, + outcomes: [ + "Seagrass farm constructed, seagrass barn raised.", + "Now growing seagrass in this general location.", + "Sand tilled. Seagrass planted.", + "'Right here, this will be a farm!' And so it was.", + "Stabilising the seabed one farm at a time!", + ], + multiOutcomes: [ + "Do we really need to till the sand to grow seagrass?", + "Grow, seagrass! Grow!", + "The connoisseurs are pleased.", + "Is anybody staffing these?", + "Farms are a-go.", + "Designated growing spots.", + "Imagine how much science must be in this place. + ], + helpText: "Pick a spot and set up a seagrass farm there.", + }, }, @@ -5106,7 +5148,7 @@ SharkGame.HomeActionCategories = { places: { name: "Places", - actions: ["getSpongeFarm", "getCoralFarm"], + actions: ["getSpongeFarm", "getCoralFarm", "getSeagrassFarm"], }, unique: { From e7632ec4fd2da6f11869385d673fb68aa7b03e3b Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 10 Jan 2026 18:11:43 +0400 Subject: [PATCH 050/152] Added the farms to the worldtype --- js/data/worldtypes.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index feb505d8..f4a3f3d9 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -383,7 +383,10 @@ SharkGame.WorldTypes = { "basicmaterials", "sharkmachines", "driftwood", - "mudskipperpuppets"], + "mudskipperpuppets", + "coralFarm", + "seagrassFarm", + ], absentResources: ["kelp", "seaApple"], modifiers: [ { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1 } From f59ffe736e67f2475fe827106c8bebd025a29308 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 10 Jan 2026 18:28:10 +0400 Subject: [PATCH 051/152] Added me to the Contributors! --- contributors.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contributors.html b/contributors.html index ec31af02..06e411dc 100644 --- a/contributors.html +++ b/contributors.html @@ -124,6 +124,10 @@

SHARK GAME: NEW FRONTIERS

Adr Playtester, Code contributor + + Three Eels in a Jellyfish Coat + Fan, Shore Ocean Developer +
    From 61cc91a374f673ce5c63df515e16933660fb5152 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 10 Jan 2026 18:45:35 +0400 Subject: [PATCH 052/152] Initiated Puns! --- js/puns.js | 324 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 324 insertions(+) create mode 100644 js/puns.js diff --git a/js/puns.js b/js/puns.js new file mode 100644 index 00000000..c6694565 --- /dev/null +++ b/js/puns.js @@ -0,0 +1,324 @@ +//this puns.js is a wip. it runs on the facts.js code so there's most likely going to be bugs. --ThreeEels +//suggested by base4 (spencers145) in 2021, initiated by ThreeEels in Jan 2026. + +SharkGame.Puns = { + dilutedResources: ["shark", "ray", "crab", "fish"], // dilute these while not in starter to keep the bad puns fresher + + showPun() { + log.addMessage(this.getPun()); + }, + + getPun() { + const pool = this.getPool(); + return SharkGame.choose(pool); + }, + + getPool() { + const pool = []; + const currentWorld = world.worldType; + if ( + this.worldBased[currentWorld] && + (!this.worldBased[currentWorld].areRequirementsMet || this.worldBased[currentWorld].areRequirementsMet()) + ) { + _.each(this.worldBased[currentWorld].messages, (fact) => { + pool.push(sharktext.boldString("Pun: ") + `${fact}`); + }); + } + + let anyAvailableResource = false; + $.each(this.resourceBased, (resource, puns) => { + // purposefully dilute some puns if we are not on the starter world + // I want these facts to be more likely relevant than not + if (world.doesResourceExist(resource) && res.getTotalResource(resource)) { + anyAvailableResource = true; + if (!this.dilutedResources.includes(resource) || currentWorld === "start" || Math.random() < 0.25) { + _.each(facts, (fact) => { + pool.push( + sharktext.boldString( + `${sharktext.getResourceName( + resource, + false, + 1, + SharkGame.Log.isNextMessageEven() + ? sharkcolor.getVariableColor("--color-dark") + : sharkcolor.getVariableColor("--color-med"), + )} pun: `, + ) + `${pun}`, + ); + }); + } + } + }); + + if (anyAvailableResource) { + // only 10% chance to include the 'default' facts + // this is because those facts are seen all over the place + // they would end up diluting the world-specific and resource-specific facts + // + // also acts as a failsafe in case there are no other facts to display + if (Math.random() < 0.1 || pool.length === 0) { + _.each(this.default, (fact) => { + pool.push(sharktext.boldString("Pun: ") + `${pun}`); + }); + } + return pool; + } else { + return ["Pun: New puns are unlocked with new resources. Keep playing to unlock some!"]; + } + }, + + worldBased: { + frigid: { + messages: ["Did you hear about the urchin's pride on its cold resilience? It felt n-ice!"], + }, + volcanic: { + messages: [ + "Placeholder :D", + ], + areRequirementsMet() { + return SharkGame.Upgrades.purchased.includes("thermalVents"); + }, + }, + shrouded: {}, + abandoned: { + messages: ["Placeholder :D"], + }, + haven: { + messages: ["Placeholder :D"], + areRequirementsMet() { + return SharkGame.Upgrades.purchased.includes("sunObservation"); + }, + }, + marine: {}, + tempestuous: { + messages: ["Placeholder :D"], + }, + shore: { + messages: [], + }, + }, + + resourceBased: { + fish: ["What did the fish detective say on the scene of crime? 'Somethinh smells fishy!"], + shark: [ + "Placeholder :D", + ], + crystal: ["Magic crystals are probably not real."], + ray: [ + "Rays can be thought of as flattened sharks. The two are very closely related evolutionarily.", + "Rays are pancakes of the sea. (note: probably not true)", + "Rays do not have bones. Neither do sharks.", + "Some rays have a venomous stinger. So despite how much we may want to, we shouldn't hug them.", + ], + crab: [ + "Throughout history, many species of crustaceans have independently evovled into crabs for no discernable reason. The phenomenon is called carcinisation.", + "Some species of crab exhibit a kind of claw asymmetry. Called the crusher and cutter, they have different shapes that give their claws more specialized purposes.", + ], + octopus: [ + "It's octopuses, not octopi.", + "Octopuses are capable of extremely advanced camoflague. They can change color, pattern, and texture to match their surroundings, enough to easily fool anything, even humans.", + "In novel circumstances, octopuses are capable of simple problem-solving. They show visible confusion when confronted with difficult problems, and take time to contemplate possible solutions.", + "Octopuses can get bored in captivity. They may fiddle with toys or interact with humans for entertainment.", + "Octopuses have great dexterity. They can use their tentacles in a surprising variety of ways to manipulate objects.", + "Octopuses have no bones whatsoever.", + "Each limb of an octopus is considered to individually have a brain to itself. They can be thought of as soldiers (the little brains) being commanded by a general in the center (a big brain).", + ], + dolphin: [ + "Dolphins are considered some of the most intelligent animal problem-solvers, next to monkeys, elephants and parrots as examples.", + "Dolphins are not smug in real life. Probably. Maybe.", + "Dolphins are creative and capable of abstract thought. In captivity, they can be asked to invent new tricks, and will often succeed.", + "Dolphins have been seen directly communicating with each other. In fact, it is believed that they can hold full, coherent conversations.", + ], + whale: [ + "The top 10 largest animal species are all whales.", + "While some whales are active hunters, others are merely supersized filter feeders. This game's whales are of unspecified type.", + "Most whales are very social creatures. Most whales travel in small groups called pods, which might make up clans, and then communities. (some, however, are solitary)", + "It is not completely understood why whales sing, but scientists agree it serves some kind of social purpose." /* Whales are observed to react to each other's songs and come to */, + ], + urchin: [ + "Sea urchins primarily eat kelp. A lot of kelp.", + "Sea urchins have been observed to wear various items on top of themselves, such as rocks. If you give them little hats, they will wear those too. It is not agreed upon why they do this.", + "Most sea urchins are not venomous.", + "The spines on most sea urchins are not very sharp. Many species of urchin can be held in the palm.", + ], + squid: [ + "Squid eat crabs. They're not eating yours out of politeness.", + "Giant squid are real. They live incredibly deep in the ocean.", + "Squid have no bones whatsoever.", + "Squids have tiny ink sacs on their skin which expand when pulled by certain skin muscles, making it possible for them to camouflage themselves.", + // Based on https://www.youtube.com/watch?v=0wtLrlIKvJE + ], + lobster: [ + "Lobsters really do eat clams. They instinctively know how to crack them open.", + "Due to a biological quirk, lobsters are highly resistant to aging and can live for an extremely long time. Some will live longer than humans.", + "Lobsters have teeth in their stomach, not in their mouth, and they chew with those teeth.", + "Lobsters have asymmetric claws. One of them, called the crusher, is used for...crushing. The other, called the pincer, is used for...pincing. Marine biologists were feeling creative, clearly.", + ], + shrimp: [ + "There are real eusocial shrimps that live in communities in sponges on reefs, complete with queens.", + "Shrimp are close relatives of lobsters. They have a lot of similarities, and in some ways are just smaller, narrower lobsters.", + ], + eel: [ + "Eels come in a wide range of sizes, from just a few inches to multiple meters.", + "The highest shock ever produced by an eel was 860 volts, more then any other animal!", + "Eels migrate a distance of 5,000 to 10,000 km across the Atlantic Ocean to the Sargasso Sea.", + ], + chimaera: [ + "Chimaera are closely related to sharks and rays.", + "Chimaera are deep-sea animals, usually found more than 500 meters (~1500 feet) below the surface of the ocean.", + "Chimaera have a venomous spine in front of their dorsal fin.", + "Chimaera are not purple, they are completely pale. They don't bother with colors because deep-sea animals like chimaera cannot be seen anyways.", + "Chimaera do not have bones. Neither do sharks or rays.", + ], + billfish: [ + "Billfish do indeed have bones, unlike sharks and rays.", + "Swordfish and marlins are large, predatory fish. At adulthood, their only natural predators are sharks (oh no) and whales.", + "The top speed of marlins is commonly reported to be 60 mph, but this is not accurate. It's actually closer to 30 mph.", + "The bill of a billfish is used to slash like a sword, not stab like a spear.", + "Swordfish are not a group of fish, they are a single species: Xiphias gladius.", + "Swordfish, spearfish, and marlins are part of a larger group of fish called billfish (the group featured in this game), of which there are only 12 species.", + ], + mudskipper: [ + "Unlike sharks and rays, mudskippers have bones.", + "The mudskipper species Periophthalmus Modestus takes care of their eggs in air pockets inside mud burrows, and floods the burrow to hatch them.", + "Some species of muskipper eat debris, making them detritivores, while other species are carnivores.", + "After a mudskipper lays their eggs, the mother normally leaves them to be guarded by the father.", + "Much like amphibians, mudskippers can breathe through their skin when wet.", + ], + caracara: [ + "Yes, I know they're birds. It was suggested that they could be replaced with starfish, but people didn't like that.", + "There are multiple species of caracara in real life, but the only one here is the striated caracara, because it's the smartest.", + "It is is pronounced KA-ruh-KAH-ruh, not KA-ruh-KA-ruh.", + ], + seaApple: [ + "Sea apples are a type of sea cucumber. They feed on debris and detritus.", + "Sea apples are in no way actually attracted to kelp. The apples in this game are weird.", + ], + jellyfish: [ + // "Sharks would definitely not have a way of acquiring most kinds of jellyfish in real life.", + "Jellyfish can be extremely dangerous. Some kinds of box jellyfish have fatal stings.", + "Turritopsis dohrnii is a species of jellyfish that can restart its lifecycle at will. In theory, this grants it an infinite lifespan.", + "Jellyfish are very old, evolutionarily speaking. A few jellyfish fossils have been dated to approximately 500 million years ago.", + "The gastric system of jellyfish has only one hole, which means that food comes out from the same place as it goes in. Ewwww.", + "Jellyfish are from the 'cnidaria' phylum, the same phylum of sea anemones.", + "Despite its name and looking like a jellyfish, comb jellies are not related to jellyfish. They are ctenophores.", + // do more research into jellies + // On it, boss -Biggest Brian + ], + sharkonium: [ + "There is nothing suspicious about the machines.", + "Small and medium-scale sharkonium machines do not require a power source. This is because sharkonium is made with crystals, which contain latent magic.", + "Sharkonium would remind a person of steel tinted purple. To a shark, it looks like shiny nothing.", + "Sharkonium does not taste like grapes. No, I will not let you taste it for yourself.", + ], + // I just decided to put something in to complete the sentence, it was driving me nuts -Biggest Brian + porite: [ + "The idea for porite comes from the structure of bones, which have spongey insides that reduce their weight while retaining their strength.", + "Porite is stronger than glass, but brittle under pressure, so it's only appropriate to make tools, not machines.", + "Porite is a kind of glass. It melts at a low temperature and sets nicely, so broken tools are easily recycled.", + "No, you can't eat it.", + ], + calcinium: [ + "Calcinium was inspired by the appearance and texture of limestone and seashells.", + "It take a lot of heat to make, and once formed, calcinium doesn't melt easily. Every batch needs to be molded quickly, or it will go to waste.", + "Calcinium is a very versatile material. Cooled quickly, it is a brittle ceramic - but cooled slowly, it's a rigid plastic. The lobsters make use of both methods.", + "While calcinium looks like meringue, it most probably doesn't taste anything like.", + ], + hardbark: [ + "To a human, hardbark looks like a dark blue stick covered in a thick layer of light-blue-tinted resin or glass. To the frenzy, it looks like a shiny rod of wood.", + "Hardbark is actually quite strong, courtesy of the crystal it's coated in. It clinks like glass.", + "No, hardbark does not taste like a blue raspberry lollipop, and NO, YOU CANNOT EAT IT--", + "You. Do. Not. Know. HOW MANY TYPOS. I have made. Trying to spell. Hardbark.", + "You might be wondering why the stick doesn't appear brown. That's because its developer couldn't find a mix between brown and light blue.", + ], + laser: [ + "Sharks with lasers were overdone, okay? 'Laser ray' is a pun, so it's obviously superior.", + "Sand probably does not actually fuse into magic crystals. Unless you count glass.", + "We do not know how the rays strap lasers to themselves. It is known only to the sharks.", + "Laser rays take power directly from the heat of hydrothermal vents, so they are each tethered to a small operating area.", + "By default, the laser ray's laser is quite low-temperature. It takes quite a bit of effort (and sand) to properly fuse anything.", + ], + coral: [ + "Some coral can actually catch small fish.", + "Coral is not a plant, it is an animal. A weird, stationary animal.", + "Coral are primarily carnivores. They eat plankton (teeny tiny things that can't swim), grabbing them with little tentacles and pulling them into their mouths.", + "Many kinds of coral have a mutualistic relationship with species of algae, who produce nutrients in exchange for carbon dioxide and shelter.", + "Despite being as stationary as a sponge, coral is more closely related to jellyfishes.", + ], + sponge: [ + "Sponges are incredibly distinct from all other animals. They are asymmetric, have no organs, and their cells can change specialization at will.", + "Sponges are incredibly, incredibly old, evolutionarily speaking. They probably date back at least 600 million years.", + "Sponge is not a plant, it is an animal. A weird, amorphous animal.", + "The pores in sponges are designed to help them filter water for food at maximum efficiency.", + "Many species of sponge have a mualistic realitionship with species of algae. The algaes use photosynthesis to produce food for the sponges.", + "Sponges have bacteria inside their own cells that help with the metabolism of many substances. This is called 'endosymbiosis'.", + "The first animal formed, the 'urmetazoa', was something akin to a sponge.", + ], + algae: [ + "Algae comes in many different shapes, sizes, and forms. A very notable one is 'valonia ventricosa,' a species where every individual cell can grow larger than a grape.", + "Algae is neither plant nor animal. It is something else entirely (a 'protist').", + "Kelp is a kind of algae. In fact, all seaweed is algae. The sea has very few true plants.", + ], + kelp: ["Kelp is not a plant, it's a kind of algae. Algae is also not a plant."], + seagrass: [ + "Unlike kelp, seagrass is a true plant. It is one of very few under the sea.", + "Seagrass flowers don't exactly look like the kind we are used to.", + ], + arcana: [ + "Arcane, super-charged energy crystals are definitely not real.", + "These things snap like fireworks when you break them. It's pretty cool.", + ], + sacrifice: ["Nobody knows how the energy of the crystals gets into the frenzy."], + science: ["Real sharks do not know how to do science. Probably."], + sand: [ + "In the real world, the ocean floor is not always sand. The deep ocean usually has much finer sediment.", + "Sand gets transported very long distances by ocean currents. The longer it takes to travel to its destination beach, the finer the sand will be.", + ], + driftwood: [ + "According to Norse mythology, the first two humans were made out of driftwood. Whatever Norse is. And humans.", + "The frenzy never burns driftwood as fuel, as the combustion releases toxic and long-lasting substances into the air.", + "Driftwood is often used by several animals, both aquatic and terrestrial, as shelter and food.", + "In the beyond, driftwood can be found in abundance as simple 'wood', but only driftwood has the right composition for hardbark.", //according to the caracaras. + ], + ancientPart: [ + "What do they do? We still aren't sure.", + "These parts would probably remind a person of train parts. To a shark, they just look like nothing.", + "What are they made of? I don't know, you tell me!", + "The ancient parts have a texture like painted-over concrete. They clink together with a sound like ceramic.", + ], + investigator: ["We are not sure where the octopuses get their funny hats. Presumably they just find them."], + eggBrooder: ["This is gross."], + collector: [ + "The Dromia personata is a species of crab that take sponges and attach them to their backs as a method of camouflage.", + "Don't touch the sponge on their backs. They're very protective about it.", + ], + delphinium: [ + "To a person, delphinium is glitter on blue gold. To a shark, it's headache-inducing.", + "The dolphin recipe for delphinium is ancient. It took them many generations to perfect the process, or so they say.", + "The dolphins are rather fond of delphinium. They appreciate the practicality of sharkonium, however.", + "Delphinium is rather heavy, and doesn't do well under stress - but soft enough to be crafted into complex shapes.", + ], + ice: ["In the original shark game, ice used to eat away your resources instead of slowing their production."], + tar: ["In the original shark game, tar was gained passively. Machines produced basically none of it."], + calciniumConverter: [ + "Machine-brain interfaces, such as the ones used by lobsters, actually already exist.", + "While the first machine-brain interface was created by the science shark team, in the real world, it was developed by brazilian scientist 'Miguel Niconelis'.", + "Machine-brain interfaces are normally done without any surgery, but the lobsters thought it looked cooler to jam the wires in their skulls.", + ], + + }, + + default: [ + "Shark Game's initial bare minimum code came from an abandoned idle game about bees. Almost no trace of bees remains!", + "The existence of resources that create resources that create resources in this game were inspired by Derivative Clicker!", + "Kitten Game was an inspiration for this game! This surprises probably no one. The very first message the game gives you is a nod of sorts.", + "There is a surprising deficit of cookie in this game.", + "Remoras were banished from the oceans in the long bygone eras. The sharks hope they never come back.", + "Fun facts will only talk about things you have already seen in-game.", + "Fun facts have always been in the game's code, but have never been exposed until this system for displaying them was added.", + "New Frontiers, this Shark Game mod, was inspired by the unfolding nature of the Candy Box games and A Dark Room.", + "Any timewalls in this game can be completely bypassed with good strategy.", + "This game has keybinds. They are more useful than you might think. Check the options menu.", + "Shark Game: New Frontiers is a mod of Cirrial's Untitled Shark Game. It started as a refurbishment, but quickly evolved into a total remake.", + ], +}; From 038e4582ad677eff46ec126c2c49c7a1e39997b5 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 10 Jan 2026 20:20:24 +0400 Subject: [PATCH 053/152] Added placeholders --- js/puns.js | 234 +++++++++++------------------------------------------ 1 file changed, 48 insertions(+), 186 deletions(-) diff --git a/js/puns.js b/js/puns.js index c6694565..3f50935d 100644 --- a/js/puns.js +++ b/js/puns.js @@ -99,226 +99,88 @@ SharkGame.Puns = { }, resourceBased: { - fish: ["What did the fish detective say on the scene of crime? 'Somethinh smells fishy!"], + fish: [ + "What did the fish detective say on the scene of crime? 'Somethinh smells fishy!" + ], + crystal: [ + "Placeholder :D" + ], + sand: [ + "Placeholder :D" + ], + kelp: [ + "Placeholder :D" + ], + driftwood: [ + "Placeholder :D" + ], + seagrass: [ + "Placeholder :D" + ], + coral: [ + "Placeholder :D" + ], + sponge: [ + "Placeholder :D" + ], + tar: [ + "Placeholder :D" + ], + ice: [ + "Placeholder :D" + ], + roughSand: [ + "Placeholder :D" + ], shark: [ "Placeholder :D", ], - crystal: ["Magic crystals are probably not real."], ray: [ - "Rays can be thought of as flattened sharks. The two are very closely related evolutionarily.", - "Rays are pancakes of the sea. (note: probably not true)", - "Rays do not have bones. Neither do sharks.", - "Some rays have a venomous stinger. So despite how much we may want to, we shouldn't hug them.", + "Placeholder :D", ], crab: [ - "Throughout history, many species of crustaceans have independently evovled into crabs for no discernable reason. The phenomenon is called carcinisation.", - "Some species of crab exhibit a kind of claw asymmetry. Called the crusher and cutter, they have different shapes that give their claws more specialized purposes.", + "Placeholder :D", ], octopus: [ - "It's octopuses, not octopi.", - "Octopuses are capable of extremely advanced camoflague. They can change color, pattern, and texture to match their surroundings, enough to easily fool anything, even humans.", - "In novel circumstances, octopuses are capable of simple problem-solving. They show visible confusion when confronted with difficult problems, and take time to contemplate possible solutions.", - "Octopuses can get bored in captivity. They may fiddle with toys or interact with humans for entertainment.", - "Octopuses have great dexterity. They can use their tentacles in a surprising variety of ways to manipulate objects.", - "Octopuses have no bones whatsoever.", - "Each limb of an octopus is considered to individually have a brain to itself. They can be thought of as soldiers (the little brains) being commanded by a general in the center (a big brain).", + "Placeholder :D", ], dolphin: [ - "Dolphins are considered some of the most intelligent animal problem-solvers, next to monkeys, elephants and parrots as examples.", - "Dolphins are not smug in real life. Probably. Maybe.", - "Dolphins are creative and capable of abstract thought. In captivity, they can be asked to invent new tricks, and will often succeed.", - "Dolphins have been seen directly communicating with each other. In fact, it is believed that they can hold full, coherent conversations.", + "Placeholder :D", ], whale: [ - "The top 10 largest animal species are all whales.", - "While some whales are active hunters, others are merely supersized filter feeders. This game's whales are of unspecified type.", - "Most whales are very social creatures. Most whales travel in small groups called pods, which might make up clans, and then communities. (some, however, are solitary)", - "It is not completely understood why whales sing, but scientists agree it serves some kind of social purpose." /* Whales are observed to react to each other's songs and come to */, + "Placeholder :D", ], urchin: [ - "Sea urchins primarily eat kelp. A lot of kelp.", - "Sea urchins have been observed to wear various items on top of themselves, such as rocks. If you give them little hats, they will wear those too. It is not agreed upon why they do this.", - "Most sea urchins are not venomous.", - "The spines on most sea urchins are not very sharp. Many species of urchin can be held in the palm.", + "Placeholder :D", ], squid: [ - "Squid eat crabs. They're not eating yours out of politeness.", - "Giant squid are real. They live incredibly deep in the ocean.", - "Squid have no bones whatsoever.", - "Squids have tiny ink sacs on their skin which expand when pulled by certain skin muscles, making it possible for them to camouflage themselves.", - // Based on https://www.youtube.com/watch?v=0wtLrlIKvJE + "Placeholder :D", ], lobster: [ - "Lobsters really do eat clams. They instinctively know how to crack them open.", - "Due to a biological quirk, lobsters are highly resistant to aging and can live for an extremely long time. Some will live longer than humans.", - "Lobsters have teeth in their stomach, not in their mouth, and they chew with those teeth.", - "Lobsters have asymmetric claws. One of them, called the crusher, is used for...crushing. The other, called the pincer, is used for...pincing. Marine biologists were feeling creative, clearly.", + "Placeholder :D", ], shrimp: [ - "There are real eusocial shrimps that live in communities in sponges on reefs, complete with queens.", - "Shrimp are close relatives of lobsters. They have a lot of similarities, and in some ways are just smaller, narrower lobsters.", + "Placeholder :D", ], eel: [ - "Eels come in a wide range of sizes, from just a few inches to multiple meters.", - "The highest shock ever produced by an eel was 860 volts, more then any other animal!", - "Eels migrate a distance of 5,000 to 10,000 km across the Atlantic Ocean to the Sargasso Sea.", + "Placeholder :D ...do I really have to do all these?", ], chimaera: [ - "Chimaera are closely related to sharks and rays.", - "Chimaera are deep-sea animals, usually found more than 500 meters (~1500 feet) below the surface of the ocean.", - "Chimaera have a venomous spine in front of their dorsal fin.", - "Chimaera are not purple, they are completely pale. They don't bother with colors because deep-sea animals like chimaera cannot be seen anyways.", - "Chimaera do not have bones. Neither do sharks or rays.", + "Placeholder :D", ], billfish: [ - "Billfish do indeed have bones, unlike sharks and rays.", - "Swordfish and marlins are large, predatory fish. At adulthood, their only natural predators are sharks (oh no) and whales.", - "The top speed of marlins is commonly reported to be 60 mph, but this is not accurate. It's actually closer to 30 mph.", - "The bill of a billfish is used to slash like a sword, not stab like a spear.", - "Swordfish are not a group of fish, they are a single species: Xiphias gladius.", - "Swordfish, spearfish, and marlins are part of a larger group of fish called billfish (the group featured in this game), of which there are only 12 species.", + "Placeholder :D" ], mudskipper: [ - "Unlike sharks and rays, mudskippers have bones.", - "The mudskipper species Periophthalmus Modestus takes care of their eggs in air pockets inside mud burrows, and floods the burrow to hatch them.", - "Some species of muskipper eat debris, making them detritivores, while other species are carnivores.", - "After a mudskipper lays their eggs, the mother normally leaves them to be guarded by the father.", - "Much like amphibians, mudskippers can breathe through their skin when wet.", + "Placeholder :D" ], caracara: [ - "Yes, I know they're birds. It was suggested that they could be replaced with starfish, but people didn't like that.", - "There are multiple species of caracara in real life, but the only one here is the striated caracara, because it's the smartest.", - "It is is pronounced KA-ruh-KAH-ruh, not KA-ruh-KA-ruh.", - ], - seaApple: [ - "Sea apples are a type of sea cucumber. They feed on debris and detritus.", - "Sea apples are in no way actually attracted to kelp. The apples in this game are weird.", - ], - jellyfish: [ - // "Sharks would definitely not have a way of acquiring most kinds of jellyfish in real life.", - "Jellyfish can be extremely dangerous. Some kinds of box jellyfish have fatal stings.", - "Turritopsis dohrnii is a species of jellyfish that can restart its lifecycle at will. In theory, this grants it an infinite lifespan.", - "Jellyfish are very old, evolutionarily speaking. A few jellyfish fossils have been dated to approximately 500 million years ago.", - "The gastric system of jellyfish has only one hole, which means that food comes out from the same place as it goes in. Ewwww.", - "Jellyfish are from the 'cnidaria' phylum, the same phylum of sea anemones.", - "Despite its name and looking like a jellyfish, comb jellies are not related to jellyfish. They are ctenophores.", - // do more research into jellies - // On it, boss -Biggest Brian - ], - sharkonium: [ - "There is nothing suspicious about the machines.", - "Small and medium-scale sharkonium machines do not require a power source. This is because sharkonium is made with crystals, which contain latent magic.", - "Sharkonium would remind a person of steel tinted purple. To a shark, it looks like shiny nothing.", - "Sharkonium does not taste like grapes. No, I will not let you taste it for yourself.", - ], - // I just decided to put something in to complete the sentence, it was driving me nuts -Biggest Brian - porite: [ - "The idea for porite comes from the structure of bones, which have spongey insides that reduce their weight while retaining their strength.", - "Porite is stronger than glass, but brittle under pressure, so it's only appropriate to make tools, not machines.", - "Porite is a kind of glass. It melts at a low temperature and sets nicely, so broken tools are easily recycled.", - "No, you can't eat it.", - ], - calcinium: [ - "Calcinium was inspired by the appearance and texture of limestone and seashells.", - "It take a lot of heat to make, and once formed, calcinium doesn't melt easily. Every batch needs to be molded quickly, or it will go to waste.", - "Calcinium is a very versatile material. Cooled quickly, it is a brittle ceramic - but cooled slowly, it's a rigid plastic. The lobsters make use of both methods.", - "While calcinium looks like meringue, it most probably doesn't taste anything like.", - ], - hardbark: [ - "To a human, hardbark looks like a dark blue stick covered in a thick layer of light-blue-tinted resin or glass. To the frenzy, it looks like a shiny rod of wood.", - "Hardbark is actually quite strong, courtesy of the crystal it's coated in. It clinks like glass.", - "No, hardbark does not taste like a blue raspberry lollipop, and NO, YOU CANNOT EAT IT--", - "You. Do. Not. Know. HOW MANY TYPOS. I have made. Trying to spell. Hardbark.", - "You might be wondering why the stick doesn't appear brown. That's because its developer couldn't find a mix between brown and light blue.", - ], - laser: [ - "Sharks with lasers were overdone, okay? 'Laser ray' is a pun, so it's obviously superior.", - "Sand probably does not actually fuse into magic crystals. Unless you count glass.", - "We do not know how the rays strap lasers to themselves. It is known only to the sharks.", - "Laser rays take power directly from the heat of hydrothermal vents, so they are each tethered to a small operating area.", - "By default, the laser ray's laser is quite low-temperature. It takes quite a bit of effort (and sand) to properly fuse anything.", - ], - coral: [ - "Some coral can actually catch small fish.", - "Coral is not a plant, it is an animal. A weird, stationary animal.", - "Coral are primarily carnivores. They eat plankton (teeny tiny things that can't swim), grabbing them with little tentacles and pulling them into their mouths.", - "Many kinds of coral have a mutualistic relationship with species of algae, who produce nutrients in exchange for carbon dioxide and shelter.", - "Despite being as stationary as a sponge, coral is more closely related to jellyfishes.", - ], - sponge: [ - "Sponges are incredibly distinct from all other animals. They are asymmetric, have no organs, and their cells can change specialization at will.", - "Sponges are incredibly, incredibly old, evolutionarily speaking. They probably date back at least 600 million years.", - "Sponge is not a plant, it is an animal. A weird, amorphous animal.", - "The pores in sponges are designed to help them filter water for food at maximum efficiency.", - "Many species of sponge have a mualistic realitionship with species of algae. The algaes use photosynthesis to produce food for the sponges.", - "Sponges have bacteria inside their own cells that help with the metabolism of many substances. This is called 'endosymbiosis'.", - "The first animal formed, the 'urmetazoa', was something akin to a sponge.", - ], - algae: [ - "Algae comes in many different shapes, sizes, and forms. A very notable one is 'valonia ventricosa,' a species where every individual cell can grow larger than a grape.", - "Algae is neither plant nor animal. It is something else entirely (a 'protist').", - "Kelp is a kind of algae. In fact, all seaweed is algae. The sea has very few true plants.", - ], - kelp: ["Kelp is not a plant, it's a kind of algae. Algae is also not a plant."], - seagrass: [ - "Unlike kelp, seagrass is a true plant. It is one of very few under the sea.", - "Seagrass flowers don't exactly look like the kind we are used to.", - ], - arcana: [ - "Arcane, super-charged energy crystals are definitely not real.", - "These things snap like fireworks when you break them. It's pretty cool.", - ], - sacrifice: ["Nobody knows how the energy of the crystals gets into the frenzy."], - science: ["Real sharks do not know how to do science. Probably."], - sand: [ - "In the real world, the ocean floor is not always sand. The deep ocean usually has much finer sediment.", - "Sand gets transported very long distances by ocean currents. The longer it takes to travel to its destination beach, the finer the sand will be.", - ], - driftwood: [ - "According to Norse mythology, the first two humans were made out of driftwood. Whatever Norse is. And humans.", - "The frenzy never burns driftwood as fuel, as the combustion releases toxic and long-lasting substances into the air.", - "Driftwood is often used by several animals, both aquatic and terrestrial, as shelter and food.", - "In the beyond, driftwood can be found in abundance as simple 'wood', but only driftwood has the right composition for hardbark.", //according to the caracaras. - ], - ancientPart: [ - "What do they do? We still aren't sure.", - "These parts would probably remind a person of train parts. To a shark, they just look like nothing.", - "What are they made of? I don't know, you tell me!", - "The ancient parts have a texture like painted-over concrete. They clink together with a sound like ceramic.", - ], - investigator: ["We are not sure where the octopuses get their funny hats. Presumably they just find them."], - eggBrooder: ["This is gross."], - collector: [ - "The Dromia personata is a species of crab that take sponges and attach them to their backs as a method of camouflage.", - "Don't touch the sponge on their backs. They're very protective about it.", - ], - delphinium: [ - "To a person, delphinium is glitter on blue gold. To a shark, it's headache-inducing.", - "The dolphin recipe for delphinium is ancient. It took them many generations to perfect the process, or so they say.", - "The dolphins are rather fond of delphinium. They appreciate the practicality of sharkonium, however.", - "Delphinium is rather heavy, and doesn't do well under stress - but soft enough to be crafted into complex shapes.", - ], - ice: ["In the original shark game, ice used to eat away your resources instead of slowing their production."], - tar: ["In the original shark game, tar was gained passively. Machines produced basically none of it."], - calciniumConverter: [ - "Machine-brain interfaces, such as the ones used by lobsters, actually already exist.", - "While the first machine-brain interface was created by the science shark team, in the real world, it was developed by brazilian scientist 'Miguel Niconelis'.", - "Machine-brain interfaces are normally done without any surgery, but the lobsters thought it looked cooler to jam the wires in their skulls.", + "Placeholder :D" ], }, default: [ - "Shark Game's initial bare minimum code came from an abandoned idle game about bees. Almost no trace of bees remains!", - "The existence of resources that create resources that create resources in this game were inspired by Derivative Clicker!", - "Kitten Game was an inspiration for this game! This surprises probably no one. The very first message the game gives you is a nod of sorts.", - "There is a surprising deficit of cookie in this game.", - "Remoras were banished from the oceans in the long bygone eras. The sharks hope they never come back.", - "Fun facts will only talk about things you have already seen in-game.", - "Fun facts have always been in the game's code, but have never been exposed until this system for displaying them was added.", - "New Frontiers, this Shark Game mod, was inspired by the unfolding nature of the Candy Box games and A Dark Room.", - "Any timewalls in this game can be completely bypassed with good strategy.", - "This game has keybinds. They are more useful than you might think. Check the options menu.", - "Shark Game: New Frontiers is a mod of Cirrial's Untitled Shark Game. It started as a refurbishment, but quickly evolved into a total remake.", + "Placeholder :D", ], }; From 01ede3bbddc960106deae03caf89e12bf1bc75b9 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 11 Jan 2026 20:19:37 +0400 Subject: [PATCH 054/152] -reserved 2 new places --- js/data/resourcetable.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index e0eed80f..a94353d5 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1029,6 +1029,10 @@ SharkGame.ResourceTable = { }, value: 770, }, + + exchangeStation: {}, + + receiverNode: {}, roughSand: { name: "rough sand", @@ -1549,6 +1553,11 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { driftwoodSnarer: 15, shoreQueller: 15, }, + }, + exchangeStation: { + multiply: { + placeholder: 0.75, + }, }, // cool tooltip test crab /* crab: { @@ -1846,7 +1855,7 @@ SharkGame.ResourceCategories = { "The location has been barred.", "Alright everyone, pack it up! Get outta here!", ], - resources: ["spongeFarm", "coralFarm", "seagrassFarm"], + resources: ["spongeFarm", "coralFarm", "seagrassFarm", "exchangeStation", "receiverNode"], }, special: { name: "Special", From ef62572857edf359214f069be58095ccc74897f9 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 11 Jan 2026 20:25:10 +0400 Subject: [PATCH 055/152] -reserved 2 new places --- js/data/homeactions.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index a217e853..0ac6ae3d 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4846,7 +4846,11 @@ SharkGame.HomeActions = { coralCollector: 1, }, }, - cost: [{ resource: "hardbark", costFunction: "linear", priceIncrease: 50 }], + cost: [ + { resource: "hardbark", costFunction: "linear", priceIncrease: 50 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 10 }, + { resource: "crab", costFunction: "linear", priceIncrease: 1 }, + ], max: "coralCollector", prereq: { resource: { @@ -4872,6 +4876,8 @@ SharkGame.HomeActions = { cost: [ { resource: "hardbark", costFunction: "linear", priceIncrease: 75 }, { resource: "crystal", costFunction: "linear", priceIncrease: 50 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 15 }, + { resource: "shark", costFunction: "linear", priceIncrease: 1 }, ], max: "shoreQueller", prereq: { @@ -4898,7 +4904,8 @@ SharkGame.HomeActions = { }, cost: [ { resource: "hardbark", costFunction: "linear", priceIncrease: 25 }, - { resource: "seagrass", costFunction: "linear", priceIncrease: 15 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 25 }, + { resource: "ray", costFunction: "linear", priceIncrease: 1 }, ], max: "driftwoodSnarer", prereq: { @@ -4926,6 +4933,8 @@ SharkGame.HomeActions = { cost: [ { resource: "hardbark", costFunction: "linear", priceIncrease: 50 }, { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 15 }, + { resource: "mudskipper", costFunction: "linear", priceIncrease: 1 }, ], max: "hardbarkSmith", prereq: { @@ -4988,7 +4997,9 @@ SharkGame.HomeActions = { "Imagine how much science must be in this place. ], helpText: "Pick a spot and set up a seagrass farm there.", - }, + }, //end of place code + getExchangeStation: {}, //end of place code + getReceiverNode: {}, //end of place code }, @@ -5148,7 +5159,7 @@ SharkGame.HomeActionCategories = { places: { name: "Places", - actions: ["getSpongeFarm", "getCoralFarm", "getSeagrassFarm"], + actions: ["getSpongeFarm", "getCoralFarm", "getSeagrassFarm", "getExchangeStation", "getReceiverNode"], }, unique: { From 657a96f3393c4358f2a7b1b68cd8916aad3569bd Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 12 Jan 2026 17:22:55 +0400 Subject: [PATCH 056/152] -added places to Shore --- js/data/worldtypes.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index f4a3f3d9..b0b6f407 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -372,6 +372,8 @@ SharkGame.WorldTypes = { includedResources: [ "basics", "coral", + "driftwood", + "intel", "seagrass", "sharks", "rays", @@ -382,10 +384,11 @@ SharkGame.WorldTypes = { "caracaras", "basicmaterials", "sharkmachines", - "driftwood", "mudskipperpuppets", "coralFarm", - "seagrassFarm", + "seagrassFarm" + "exchangeStation", + "recieverNode", ], absentResources: ["kelp", "seaApple"], modifiers: [ From 4174cda0642f1fae03fdd6f22523a2cfe193a4b8 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Tue, 13 Jan 2026 17:40:00 +0400 Subject: [PATCH 057/152] -added stormgoers + stabilizers to crab cheat --- js/tabs/cheatdevice.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/js/tabs/cheatdevice.js b/js/tabs/cheatdevice.js index 37e85b37..9fcffbbb 100644 --- a/js/tabs/cheatdevice.js +++ b/js/tabs/cheatdevice.js @@ -768,6 +768,12 @@ SharkGame.CheatsAndDebug = { world.worldResources.get("extractionTeam").exists = false; res.setResource("extractionTeam", 0); res.setTotalResource("extractionTeam", 0); + world.worldResources.get("stormgoer").exists = false; + res.setResource("stormgoer", 0); + res.setTotalResource("stormgoer", 0); + world.worldResources.get("stabilizer").exists = false; + res.setResource("stabilizer", 0); + res.setTotalResource("stabilizer", 0); res.reconstructResourcesTable(); if (world.worldType === "start") { delete SharkGame.HomeActions.generated.default.getCrab; @@ -775,12 +781,16 @@ SharkGame.CheatsAndDebug = { delete SharkGame.HomeActions.generated.default.getPlanter; delete SharkGame.HomeActions.generated.default.getCollector; delete SharkGame.HomeActions.generated.default.getExtractionTeam; + delete SharkGame.HomeActions.generated.default.getStormgoer; + delete SharkGame.HomeActions.generated.default.getStabilizer; } else { delete SharkGame.HomeActions.generated[world.worldType].getCrab; delete SharkGame.HomeActions.generated[world.worldType].getBrood; delete SharkGame.HomeActions.generated[world.worldType].getPlanter; delete SharkGame.HomeActions.generated[world.worldType].getCollector; delete SharkGame.HomeActions.generated[world.worldType].getExtractionTeam; + delete SharkGame.HomeActions.generated[world.worldType].getStormgoer; + delete SharkGame.HomeActions.generated[world.worldType].getStabilizer } SharkGame.TabHandler.setUpTab(); return "Rolled a fourteen. What are you talking about? Crabs aren't real. There were never crabs to begin with."; From 7e511db986ad63e612805061e7cb290f7b6c99db Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Tue, 13 Jan 2026 18:10:21 +0400 Subject: [PATCH 058/152] -added stabilizers --- js/data/homeactions.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 0ac6ae3d..3806617d 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4721,6 +4721,9 @@ SharkGame.HomeActions = { helpText: "Convince a caracara from the surface to retrieve crystals.", }, //end of creature code + // CRAB JOBS ///////////////////////////////// + getStabilizer: { }, + // MUDSKIPPER JOBS /////////////////////////// getBurrow: { name: "Dig mudskipper burrow", @@ -4985,7 +4988,7 @@ SharkGame.HomeActions = { "Now growing seagrass in this general location.", "Sand tilled. Seagrass planted.", "'Right here, this will be a farm!' And so it was.", - "Stabilising the seabed one farm at a time!", + "Stabilizing the seabed one farm at a time!", ], multiOutcomes: [ "Do we really need to till the sand to grow seagrass?", From 5227356054ae38cb87c1fcc5802f886ab1c1d9b5 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Wed, 14 Jan 2026 10:33:30 +0400 Subject: [PATCH 059/152] -fixed a typo --- js/data/worldtypes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index b0b6f407..aa655e06 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -388,7 +388,7 @@ SharkGame.WorldTypes = { "coralFarm", "seagrassFarm" "exchangeStation", - "recieverNode", + "receiverNode", ], absentResources: ["kelp", "seaApple"], modifiers: [ From 70d173787eb16fc2e11c2f4323fd47c973b2da33 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Wed, 14 Jan 2026 10:36:36 +0400 Subject: [PATCH 060/152] -updated hardbark price --- js/data/homeactions.js | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 3806617d..21c8285b 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4625,20 +4625,8 @@ SharkGame.HomeActions = { }, }, cost: [ - { - resource: "crystal", - costFunction: "constant", - get priceIncrease() { - return 5 - SharkGame.Aspects.syntheticTransmutation.level; - }, - }, - { - resource: "driftwood", - costFunction: "constant", - get priceIncrease() { - return 10 - 3 * SharkGame.Aspects.syntheticTransmutation.level; - }, - }, + { resource: "crystal", costFunction: "constant", priceIncrease: 5}, + { resource: "driftwood", costFunction: "constant", priceIncrease: 1}, ], max: "hardbark", prereq: { From df36e5c3e87dc20692207d46ee3e1d7917b709d0 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Wed, 14 Jan 2026 12:20:46 +0400 Subject: [PATCH 061/152] -added Stabilizer code --- js/data/homeactions.js | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 21c8285b..b03145de 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4710,7 +4710,35 @@ SharkGame.HomeActions = { }, //end of creature code // CRAB JOBS ///////////////////////////////// - getStabilizer: { }, + getStabilizer: { + name: "Provide crab stabilizer", + effect: { + resource: { + stabilizer: 1, + }, + }, + cost: [ + { resource: "crab", costFunction: "linear", priceIncrease: 1 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 2 }, + { resource: "coral", costFunction: "linear", priceIncrease: 4 }, + ], + max: "stabilizer", + prereq: { + resource: { + crab: 1, + coral: 4, + seagrass: 2, + }, + upgrade: ["stabilization"], + }, + outcomes: [ + "/*to be written in future*/", + ], + multiOutcomes: [ + "/*to be written in future*/", + ], + helpText: "Provide a crab with coral and seagrass to plant.", + }, // MUDSKIPPER JOBS /////////////////////////// getBurrow: { From 9c8ddf0fe002529785a222273eb301f511e228e3 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Fri, 16 Jan 2026 12:12:04 +0400 Subject: [PATCH 062/152] -I think I did one word this time --- js/data/homeactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index b03145de..ebc89fa8 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4679,7 +4679,7 @@ SharkGame.HomeActions = { helpText: "Liberate a mudskipper from its boring old life and command it to retrieve driftwood for you.", }, //end of creature code getCaracara: { - name: "Procure caracara", + name: "Convince caracara", effect: { resource: { caracara: 1, From 82b02b56531694d299b37b01f95af9a97613ac1c Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Fri, 16 Jan 2026 14:21:37 +0400 Subject: [PATCH 063/152] -filled in the place codes --- js/data/homeactions.js | 60 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index ebc89fa8..7489798e 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -5017,8 +5017,64 @@ SharkGame.HomeActions = { ], helpText: "Pick a spot and set up a seagrass farm there.", }, //end of place code - getExchangeStation: {}, //end of place code - getReceiverNode: {}, //end of place code + getExchangeStation: { + name: "Set up exchange station", + effect: { + resource: { + exchangeStation: 1, + }, + }, + cost: [ + { resource: "driftwood", costFunction: "linear", priceIncrease: 50 }, + { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, + { resource: "coral", costFunction: "linear", priceIncrease: 15 }, + ], + max: "exchangeStation", + prereq: { + resource: { + driftwood: 50, + sharkonium: 25, + coral: 15, + }, + upgrade: ["platformExpansion"], + }, + outcomes: [ + "//*to be written in future*//", + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Build an abovewater-extending station for the frenzy to use.", + }, //end of place code + getReceiverNode: { + name: "Construct receiver node", + effect: { + resource: { + receiverNode: 1, + }, + }, + cost: [ + { resource: "hardbark", costFunction: "linear", priceIncrease: 50 }, + { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 5 }, + ], + max: "receiverNode", + prereq: { + resource: { + hardbark: 50, + sharkonium: 25, + crystal: 5, + }, + upgrade: ["intelTowers"], + }, + outcomes: [ + "//*to be written in future*//", + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Build a tall spire for extra collection of intel.", + }, //end of place code }, From 16af404cf5fcbbea4d7709e6bf89f0f99a98bed5 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Fri, 16 Jan 2026 14:27:38 +0400 Subject: [PATCH 064/152] -filled in two place code --- js/data/resourcetable.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index a94353d5..5bb5e661 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -865,14 +865,14 @@ SharkGame.ResourceTable = { driftwood: 0.5, }, jobs: ["burrow", "mentor"], - value: 500, //(what does this mean?) --ThreeCrabs + value: 500, //(what does this mean?) --ThreeEels }, burrow: { name: "mudskipper burrows", singleName: "mudskipper burrow", color: "#B38300", - desc: "A tiny hole for tiny allies to flail around in. And make more allies.", + desc: "A tiny hole for tiny allies to flail around in.", income: { mudskipper: 0.05, }, @@ -1030,9 +1030,24 @@ SharkGame.ResourceTable = { value: 770, }, - exchangeStation: {}, + exchangeStation: { + name: "exchange stations", + singleName: "exchange station", + desc: "A bustling hub of beyonderwalkers and seaborn.", + color: "#FFFFFF", + value: 1500 + }, - receiverNode: {}, + receiverNode: { + name: "receiver nodes", + singleName: "receiver node", + desc: "Spires to catch the intel.", + color: "#FFFFFF", + income: { + intel: 1.5, + }, + value: 1500, + }, roughSand: { name: "rough sand", From 3c3fb223bff80f480b12bd12b3c58d794ae8ef16 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Fri, 16 Jan 2026 21:10:29 +0400 Subject: [PATCH 065/152] =?UTF-8?q?-synced=20with=20part=20of=20Toby?= =?UTF-8?q?=E2=80=99s=20new=20commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 2448995f..fe8ab100 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,14 @@ "scss:w:big": "npm run scss:big --watch" }, "devDependencies": { - "@eslint/js": "^9.26.0", - "@types/jquery": "^3.5.32", - "@types/lodash": "^4.17.16", - "@types/pako": "^2.0.3", - "eslint": "^9.26.0", - "neostandard": "^0.12.1", - "sass": "^1.88.0", - "simple-git-hooks": "^2.13.0" + "@eslint/js": "^9.39.2", + "@types/jquery": "^3.5.33", + "@types/lodash": "^4.17.23", + "@types/pako": "^2.0.4", + "eslint": "^9.39.2", + "neostandard": "^0.12.2", + "sass": "^1.97.2", + "simple-git-hooks": "^2.13.1" }, "simple-git-hooks": { "pre-commit": "npm test" From afac88183912f907170e5de08a74f13c6f1c5e64 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 17 Jan 2026 16:06:27 +0400 Subject: [PATCH 066/152] -removed shore values --- js/data/resourcetable.js | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 34efc5ba..c044fb3d 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -788,7 +788,6 @@ SharkGame.ResourceTable = { coral: 0.5, seagrass: 0.5, }, - value: 1000, }, mudskipper: { @@ -800,7 +799,6 @@ SharkGame.ResourceTable = { driftwood: 0.5, }, jobs: ["burrow", "mentor"], - value: 500, //(what does this mean?) --ThreeEels }, burrow: { @@ -811,7 +809,6 @@ SharkGame.ResourceTable = { income: { mudskipper: 0.05, }, - value: 1000, }, driftwood: { @@ -819,7 +816,6 @@ SharkGame.ResourceTable = { singleName: "driftwood", desc: "Buoyant detritus from the beyond.", color: "#342D19", - value: 1000, }, hardbark: { @@ -827,7 +823,6 @@ SharkGame.ResourceTable = { singleName: "hardbark", desc: "Pistons and mechanisms for the puppets.", color: "#1F2F45", - value: 1500, }, intel: { @@ -835,7 +830,6 @@ SharkGame.ResourceTable = { singleName: "intel", desc: "What the Braver knows.", color: "#FFFFFF", - value: 150, }, mentor: { @@ -843,7 +837,6 @@ SharkGame.ResourceTable = { singleName: "puppet mentor", desc: "Learned mudskippers, teaching the puppets known techniques.", color: "#CC6600", - value: 2000, }, caracara: { @@ -855,7 +848,6 @@ SharkGame.ResourceTable = { crystal: 1, }, jobs: ["retrievalDuo", "connoisseur"], - value: 3000, }, retrievalDuo: { @@ -863,7 +855,6 @@ SharkGame.ResourceTable = { singleName: "retrieval duo", desc: "A huffy pair of searchers, venturing further than ever before.", color: "#cc9966", - value: 2000 }, connoisseur: { @@ -875,7 +866,6 @@ SharkGame.ResourceTable = { seagrass: 0.5, coral: 0.5, }, - value: 2000 }, coralCollector: { @@ -886,7 +876,6 @@ SharkGame.ResourceTable = { income: { coral: 3 }, - value: 3500, }, driftwoodSnarer: { @@ -897,7 +886,6 @@ SharkGame.ResourceTable = { income: { driftwood: 2 }, - value: 3500, }, hardbarkSmith: { @@ -909,7 +897,6 @@ SharkGame.ResourceTable = { hardbark: 2, crystal: -2 }, - value: 3500, }, shoreQueller: { @@ -921,7 +908,6 @@ SharkGame.ResourceTable = { seagrass: 3, crystal: 3, }, - value: 3500, }, safeholdSentinel: { @@ -932,7 +918,6 @@ SharkGame.ResourceTable = { income: { roughSand: -5.5, }, - value: 1000, }, barrageBraver: { @@ -943,7 +928,6 @@ SharkGame.ResourceTable = { income: { intel: 0.0001 }, - value: 1000, }, gatemasterPuppet: { @@ -951,7 +935,6 @@ SharkGame.ResourceTable = { singleName: "Gatemaster", desc: "It oversees its children and its home.", color: "#FFFFFF", - value: 2000, }, seagrassFarm: { @@ -962,7 +945,6 @@ SharkGame.ResourceTable = { income: { seagrass: 1.5, }, - value: 770, }, exchangeStation: { @@ -970,7 +952,6 @@ SharkGame.ResourceTable = { singleName: "exchange station", desc: "A bustling hub of beyonderwalkers and seaborn.", color: "#FFFFFF", - value: 1500 }, receiverNode: { @@ -981,7 +962,6 @@ SharkGame.ResourceTable = { income: { intel: 1.5, }, - value: 1500, }, roughSand: { @@ -989,7 +969,6 @@ SharkGame.ResourceTable = { singleName: "rough sand", desc: "Jagged grains that dig into our flesh.", color: "#CC9900", - value: -100, }, // SHROUDED From b9fbb8a5bef28339a7e529de648a9a3ab4e107f2 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 18 Jan 2026 17:21:14 +0400 Subject: [PATCH 067/152] -added a lot of upgrade placeholders --- js/data/upgrades.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 826c7463..83f68d5c 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4527,4 +4527,34 @@ SharkGame.Upgrades = { }, }, }, + shore: { + template: { + name: "Upgrade Template", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { }, + required: { }, + effect: { }, + murkAssessment: {}, + fleeBarrage: {}, + justPushFurtherLol: {}, + crabDisappearance: {}, + mudskipperContact: {}, + crystalBite: { required: { upgrades: ["justPushFurtherLol"] } }, + crystalSpade: {}, + crystalArmour: {}, //gosh that's a lot of crystals eh --ThreeEels + crystalContainer: {}, + seabedGeology: {}, + underwaterChemistry: {}, + thermalVents: {}, + stabilization: {}, + driftwoodAnalysis: {}, + hardbarkCoating: {}, + puppetAssembly: {}, + fixModels: {}, + puppetTeaching: {}, + + }, + }, }; From b0b5a9e526c6599f8e151fb20a29578bca3e88c7 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 18 Jan 2026 18:25:07 +0400 Subject: [PATCH 068/152] -added shore bug colour placeholder --- css/style.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/css/style.css b/css/style.css index 913e1a0b..a304c18e 100644 --- a/css/style.css +++ b/css/style.css @@ -92,6 +92,14 @@ --color-darker: #2b0707; --color-title: rgba(104, 30, 30, 0.2); } +:root :not(.no-theme).shore { + --color-lighter: #ffffff; + --color-light: #ffffff; + --color-med: #ffffff; + --color-dark: #ffffff; + --color-darker: #ffffff; + --color-title: rgba(47, 93, 124, 0.2); +} /*------------------------------------------------------ ACTUAL CSS RULES SORTA From 454fbc9074a893b2169105c944888189340fc873 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 18 Jan 2026 20:37:43 +0400 Subject: [PATCH 069/152] -set Shore bg hex codes --- css/style.css | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/css/style.css b/css/style.css index a304c18e..505f43b2 100644 --- a/css/style.css +++ b/css/style.css @@ -93,12 +93,12 @@ --color-title: rgba(104, 30, 30, 0.2); } :root :not(.no-theme).shore { - --color-lighter: #ffffff; - --color-light: #ffffff; - --color-med: #ffffff; - --color-dark: #ffffff; - --color-darker: #ffffff; - --color-title: rgba(47, 93, 124, 0.2); + --color-lighter: #ffdf80; + --color-light: #ffd24d; + --color-med: #ffbf00; + --color-dark: #cc9900; + --color-darker: #997300; + --color-title: rgba(255, 238, 52, 0.2); } /*------------------------------------------------------ From 76a716800f98b89d0e5ae8aa33558e503a0e801c Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 19 Jan 2026 17:03:16 +0400 Subject: [PATCH 070/152] -added shore bg hex codes --- styles/style.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/styles/style.scss b/styles/style.scss index cbe45540..3c6d9db0 100644 --- a/styles/style.scss +++ b/styles/style.scss @@ -59,6 +59,13 @@ $color-med-volcanic: #681e1e; $color-dark-volcanic: #521212; $color-darker-volcanic: #2b0707; +//shore theme +$color-lighter-shore: #ffdf80; +$color-light-shore: #ffd24d; +$color-med-shore: #ffbf00; +$color-dark-shore: #cc9900; +$color-darker-shore: #997300; + // -- END OF THEMES -- $color-danger-lighter: #975f5f; From cd99959b402162cc6700201054ed6a3c234c840d Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 19 Jan 2026 17:31:57 +0400 Subject: [PATCH 071/152] =?UTF-8?q?-whoops=20they=E2=80=99re=20alphabetica?= =?UTF-8?q?l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/style.css | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/css/style.css b/css/style.css index 505f43b2..b911783a 100644 --- a/css/style.css +++ b/css/style.css @@ -67,6 +67,14 @@ --color-dark: #053247; --color-darker: #001d2b; --color-title: rgba(29, 83, 114, 0.2); +} + :root :not(.no-theme).shore { + --color-lighter: #ffdf80; + --color-light: #ffd24d; + --color-med: #ffbf00; + --color-dark: #cc9900; + --color-darker: #997300; + --color-title: rgba(255, 238, 52, 0.2); } :root :not(.no-theme).shrouded { --color-lighter: #22bec3; @@ -92,14 +100,6 @@ --color-darker: #2b0707; --color-title: rgba(104, 30, 30, 0.2); } -:root :not(.no-theme).shore { - --color-lighter: #ffdf80; - --color-light: #ffd24d; - --color-med: #ffbf00; - --color-dark: #cc9900; - --color-darker: #997300; - --color-title: rgba(255, 238, 52, 0.2); -} /*------------------------------------------------------ ACTUAL CSS RULES SORTA From a58f383e86d5606bc561aa7e83005140d957ab92 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 19 Jan 2026 17:35:58 +0400 Subject: [PATCH 072/152] =?UTF-8?q?-whoops=20they=E2=80=99re=20alphabetica?= =?UTF-8?q?l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- styles/style.scss | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/styles/style.scss b/styles/style.scss index 3c6d9db0..58a7bfb9 100644 --- a/styles/style.scss +++ b/styles/style.scss @@ -38,6 +38,13 @@ $color-med: #2e4372; $color-dark: #152a55; $color-darker: #061639; +//shore theme +$color-lighter-shore: #ffdf80; +$color-light-shore: #ffd24d; +$color-med-shore: #ffbf00; +$color-dark-shore: #cc9900; +$color-darker-shore: #997300; + //shrouded theme $color-lighter-shrouded: #22bec3; $color-light-shrouded: #302d39; @@ -59,13 +66,6 @@ $color-med-volcanic: #681e1e; $color-dark-volcanic: #521212; $color-darker-volcanic: #2b0707; -//shore theme -$color-lighter-shore: #ffdf80; -$color-light-shore: #ffd24d; -$color-med-shore: #ffbf00; -$color-dark-shore: #cc9900; -$color-darker-shore: #997300; - // -- END OF THEMES -- $color-danger-lighter: #975f5f; From 8b1fcdbeaffc71c5f04a234e6d06ad7f32dded05 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 19 Jan 2026 17:53:11 +0400 Subject: [PATCH 073/152] -added note --- css/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/style.css b/css/style.css index b911783a..4940c1b1 100644 --- a/css/style.css +++ b/css/style.css @@ -69,7 +69,7 @@ --color-title: rgba(29, 83, 114, 0.2); } :root :not(.no-theme).shore { - --color-lighter: #ffdf80; + --color-lighter: #ffdf80; /*potential other shade: #284d00*/ --color-light: #ffd24d; --color-med: #ffbf00; --color-dark: #cc9900; From daea4ece0a0b4527a2f8c3041e8232ed4c2ddeef Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 19 Jan 2026 17:53:49 +0400 Subject: [PATCH 074/152] -added note --- styles/style.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/styles/style.scss b/styles/style.scss index 58a7bfb9..be31c583 100644 --- a/styles/style.scss +++ b/styles/style.scss @@ -39,7 +39,7 @@ $color-dark: #152a55; $color-darker: #061639; //shore theme -$color-lighter-shore: #ffdf80; +$color-lighter-shore: #ffdf80; //potential other shade: #284d00* $color-light-shore: #ffd24d; $color-med-shore: #ffbf00; $color-dark-shore: #cc9900; From 589e22cb5013217587cc9384a8211e25c6ccb790 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 22 Jan 2026 17:23:04 +0400 Subject: [PATCH 075/152] -added requirements to some schtuff --- js/data/upgrades.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 83f68d5c..d6ca8ea4 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4528,7 +4528,7 @@ SharkGame.Upgrades = { }, }, shore: { - template: { + template: { name: "Upgrade Template", desc: "This is the text in the lab button thingy...", researchedMessage: "...and this is the text that goes next to the buttons!", @@ -4536,20 +4536,21 @@ SharkGame.Upgrades = { cost: { }, required: { }, effect: { }, + }, murkAssessment: {}, fleeBarrage: {}, justPushFurtherLol: {}, crabDisappearance: {}, + driftwoodAnalysis: {}, mudskipperContact: {}, crystalBite: { required: { upgrades: ["justPushFurtherLol"] } }, - crystalSpade: {}, - crystalArmour: {}, //gosh that's a lot of crystals eh --ThreeEels - crystalContainer: {}, + crystalSpade: { required: { upgrades: ["justPushFurtherLol"] } }, + crystalArmour: { required: { upgrades: ["justPushFurtherLol", "mudskipperContact"] } }, //gosh that's a lot of crystals eh --ThreeEels + crystalContainer: { required: { upgrades: ["justPushFurtherLol"] } }, seabedGeology: {}, underwaterChemistry: {}, thermalVents: {}, stabilization: {}, - driftwoodAnalysis: {}, hardbarkCoating: {}, puppetAssembly: {}, fixModels: {}, From e271e437cd5e5463ae763bb87abf987f98c55813 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 22 Jan 2026 18:42:16 +0400 Subject: [PATCH 076/152] -wrote out the code for the first three Shore upgrades --- js/data/upgrades.js | 61 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index d6ca8ea4..444f4bd1 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4537,9 +4537,63 @@ SharkGame.Upgrades = { required: { }, effect: { }, }, - murkAssessment: {}, - fleeBarrage: {}, - justPushFurtherLol: {}, + murkAssessment: { + name: "Murk Assessment", + desc: "What is that sandy cloud? What does it do? We should go inside it.", + researchedMessage: "It's a sandstorm. The one where the rough grains of sand come from. To say it's torture is an understatement.", + effectDesc: "If we ever escape this... this barrage, we'll never go near it again.", + cost: { + science: 50, + fish: 250, + crystal: 15, + shark: 10, + ray: 10, + crab: 5, + }, + required: { + seen: ["sand", "roughSand"], + }, + effect: { + resourceBoost: { + roughSand: 100, + }, + }, + }, + fleeBarrage: { + name: "Flee Barrage", + desc: "We need to go back. This hurts.", + researchedMessage: "No. No, no, no, no, no. It's gone. It's covered.", + effectDesc: "Our previous location has been consumed by the sandstorm.", + cost: { + shark: 3, + roughSand: 15, + ray: 3, + scientist: 3, + }, + required: { + upgrades: ["murkAssessment"], + }, + effect: {}, + }, + justPushFurtherLol: { + name: "Our Only Choice...", + desc: "...is to move forward.", + researchedMessage: "It worked. It worked. I can't believe it.", + effectDesc: "We burst into a clear space. It's wide, but disappointingly narrow.", + cost: { + scientist: 1, + shark: 1, + ray: 1, + }, + required: { + upgrades: ["fleeBarrage"], + }, + effect: { + resourceBoost: { + roughSand: -100, + }, + }, + }, crabDisappearance: {}, driftwoodAnalysis: {}, mudskipperContact: {}, @@ -4550,6 +4604,7 @@ SharkGame.Upgrades = { seabedGeology: {}, underwaterChemistry: {}, thermalVents: {}, + laserRays: {}, stabilization: {}, hardbarkCoating: {}, puppetAssembly: {}, From a4f29e220ac52b8604d12f9c27ffb74b0f485602 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 22 Jan 2026 19:16:38 +0400 Subject: [PATCH 077/152] -filled in like three/four more upgrade codes --- js/data/upgrades.js | 74 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 444f4bd1..972b3023 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4594,12 +4594,78 @@ SharkGame.Upgrades = { }, }, }, - crabDisappearance: {}, - driftwoodAnalysis: {}, - mudskipperContact: {}, + crabDisappearance: { + name: "Crab Disappearance", + desc: "The crabs keep on disappearing from sight, only to seemingly come back safe with more crystals. What's going on?", + researchedMessage: "We… we, uh… what’s the ‘beyond’?", + effectDesc: + "Crabs are now twice as effective at finding crystals - and they retrieve lots anyway.", + cost: { + science: 115, + crab: 5, + }, + required: { + upgrades: ["crystalContainer", "seabedGeology"], + seen: ["crab", "crystal"], + }, + effect: { + incomeMultiplier: { + crab: 2, + }, + }, + }, + driftwoodAnalysis: { + name: "Driftwood Analysis", + desc: "These brittle brown things keep floating in the water above us. What are they?", + researchedMessage: "Apparently this ‘driftwood’ comes from ABOVE THE OCEAN. Is that even a place?? Is that why it’s so flaky???", + effectDesc: "Crabs can now retrieve driftwood on their excursions to the beyond.", + cost: { + science: 25, + }, + required: { + upgrades: ["crabDisappearance"], + }, + effect: { + addDriftwoodIncome: { + crab: 0.5, + }, + }, + }, + mudskipperContact: { + name: "Mudskipper Contact", + desc: "So, they’re fish, but the one thing that stops us from eating them is that they can SURVIVE ABOVE WATER.", + researchedMessage: "After stating our business, the mudskippers hesitated for a while, before saying… we still don’t know what they mean.", + effectDesc: + "Mudskippers can now be recruited to retrieve objects from above the surface, as long as they stay moist.", + cost: { + science: 150, + driftwood: 10, + }, + required: { + upgrades: ["driftwoodAnalysis"], + }, + events: ["shoreAddMudskipper"], + }, crystalBite: { required: { upgrades: ["justPushFurtherLol"] } }, crystalSpade: { required: { upgrades: ["justPushFurtherLol"] } }, - crystalArmour: { required: { upgrades: ["justPushFurtherLol", "mudskipperContact"] } }, //gosh that's a lot of crystals eh --ThreeEels + crystalArmour: { + name: "Crystal Armour", + desc: "Forge some armour for the useful fish.", + researchedMessage: "Mudskippers can work for us five times faster.", + effectDesc: "With the new moisture-restraining armour, mudskippers work five times faster.", + cost: { + science: 250, + crystal: 75, + }, + required: { + upgrades: ["justPushFurtherLol", "mudskipperContact"], + }, + effect: { + incomeMultiplier: { + mudskipper: 5, + }, + }, + }, //gosh that's a lot of crystals eh --ThreeEels crystalContainer: { required: { upgrades: ["justPushFurtherLol"] } }, seabedGeology: {}, underwaterChemistry: {}, From 23ef994000758ce88ef895d75cf4a34237a1e31d Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Fri, 23 Jan 2026 13:45:59 +0400 Subject: [PATCH 078/152] -added driftwood income modifier --- js/data/modifiertypes.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/js/data/modifiertypes.js b/js/data/modifiertypes.js index 1144ddcf..f9067c4c 100644 --- a/js/data/modifiertypes.js +++ b/js/data/modifiertypes.js @@ -382,6 +382,35 @@ SharkGame.ModifierTypes = { // this applies to base income so it should never be reapplied return input; }, + }, + addDriftwoodIncome: { + defaultValue: 0, + apply(current, degree, resource) { + if (!SharkGame.ResourceMap.get(resource).baseIncome) { + SharkGame.ResourceMap.get(resource).baseIncome = {}; + } + if (!SharkGame.ResourceMap.get(resource).income) { + SharkGame.ResourceMap.get(resource).income = {}; + } + const baseIncomes = SharkGame.ResourceMap.get(resource).baseIncome; + baseIncomes.driftwood = (baseIncomes.driftwood ? baseIncomes.driftwood : 0) + degree; + res.reapplyModifiers(resource, "driftwood"); + return current + degree; + }, + effectDescription(degree, resource, background) { + return `Add ${degree} ${sharktext.getResourceName("driftwood", false, false, background)}/s to ${sharktext.getResourceName( + resource, + false, + 69, + background, + )}`; + }, + getEffect(_genDegree, _outDegree, _gen, _out) { + return 1; + }, + applyToInput(input, _genDegree, _outDegree, _gen, _out) { + return input; + }, }, }, }, From 22e7e7ede1345196777d144984a65a2038e257c4 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Fri, 23 Jan 2026 14:28:24 +0400 Subject: [PATCH 079/152] -added two new Shore homemessages --- js/data/homemessages.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/js/data/homemessages.js b/js/data/homemessages.js index 12ddf010..0b5ff16e 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -14,6 +14,7 @@ SharkGame.HomeMessages = { }, { name: "start-sharks", + unlock: { resource: { shark: 2 } }, message: "More sharks swim over, curious and watchful.", }, @@ -536,6 +537,16 @@ SharkGame.HomeMessages = { unlock: { upgrade: ["justPushFurtherLol"] }, message: "At last, by going further into the sandstorm, you burst into a clear space of calm. But a wall of sand blocks your path.", }, + { + name: "shore-discover-driftwood", + unlock: { upgrade: ["crabDisappearance"] }, + message: "You notice some long, branching brown things bobbing on the surface. Some sharks say it's flaky.", + }, + { + name: "shore-add-mudskipper", + unlock: { upgrade: ["mudskipperContact"] }, + message: "These tiny fish aren't very remarkable - but what they (skittishly) bring back is another matter.", + }, ], /* From 13b89a0c193c186ea3816568776386f51acc649a Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Fri, 23 Jan 2026 14:32:53 +0400 Subject: [PATCH 080/152] -removed some costs, added some placeholders --- js/data/upgrades.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 972b3023..04272efa 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4543,9 +4543,6 @@ SharkGame.Upgrades = { researchedMessage: "It's a sandstorm. The one where the rough grains of sand come from. To say it's torture is an understatement.", effectDesc: "If we ever escape this... this barrage, we'll never go near it again.", cost: { - science: 50, - fish: 250, - crystal: 15, shark: 10, ray: 10, crab: 5, @@ -4566,7 +4563,6 @@ SharkGame.Upgrades = { effectDesc: "Our previous location has been consumed by the sandstorm.", cost: { shark: 3, - roughSand: 15, ray: 3, scientist: 3, }, @@ -4627,7 +4623,7 @@ SharkGame.Upgrades = { }, effect: { addDriftwoodIncome: { - crab: 0.5, + crab: 2, }, }, }, @@ -4652,7 +4648,7 @@ SharkGame.Upgrades = { name: "Crystal Armour", desc: "Forge some armour for the useful fish.", researchedMessage: "Mudskippers can work for us five times faster.", - effectDesc: "With the new moisture-restraining armour, mudskippers work five times faster.", + effectDesc: "With the new moisture-retaining armour, mudskippers work five times faster.", cost: { science: 250, crystal: 75, @@ -4676,7 +4672,15 @@ SharkGame.Upgrades = { puppetAssembly: {}, fixModels: {}, puppetTeaching: {}, - + tunnelExpedition: {}, + thingyRepairing: {}, + raiderTruce: {}, + crystalTalons: {}, + beyondwalkerPairing: {}, + platformExpansion: {}, + seagrassAttention: {}, + taleHeeding: {}, + intelTowers: {}, }, }, }; From e1f585d365f727985a967b86abdc140a1597760a Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Fri, 23 Jan 2026 21:58:19 +0400 Subject: [PATCH 081/152] -added some puns --- js/puns.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/js/puns.js b/js/puns.js index 3f50935d..b58ad5fa 100644 --- a/js/puns.js +++ b/js/puns.js @@ -100,7 +100,8 @@ SharkGame.Puns = { resourceBased: { fish: [ - "What did the fish detective say on the scene of crime? 'Somethinh smells fishy!" + "What did the fish detective say on the scene of crime? 'Somethinh smells fishy!", + "After one of your sharks ate a clownfish, do you know what he said?
    'This tastes like it’s depressed and tired of constantly being seen as a joke!'", ], crystal: [ "Placeholder :D" @@ -160,10 +161,11 @@ SharkGame.Puns = { "Placeholder :D", ], shrimp: [ - "Placeholder :D", + "The shrimp traitor was surrounded. He couldn’t scampi away this time.", + "An eel went to a restaurant and ordered some rice. He was confused. A shrimp had fried this rice?
    He then remembered that shrimp are actually decent cooks.", ], eel: [ - "Placeholder :D ...do I really have to do all these?", + "An eel went to a restaurant and ordered some rice. He was confused. A shrimp had fried this rice?
    He then remembered that shrimp are actually decent cooks.", ], chimaera: [ "Placeholder :D", From b158474cd2488da70d90c24f2ccca17cc3732a65 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 15:51:37 +0400 Subject: [PATCH 082/152] -fixed smth --- 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 7489798e..4f7c49f2 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4729,7 +4729,7 @@ SharkGame.HomeActions = { coral: 4, seagrass: 2, }, - upgrade: ["stabilization"], + upgrade: ["agriculture"], }, outcomes: [ "/*to be written in future*/", @@ -4997,7 +4997,7 @@ SharkGame.HomeActions = { ], max: "seagrassFarm", prereq: { - upgrade: ["Agriculture"], + upgrade: ["agriculture"], }, outcomes: [ "Seagrass farm constructed, seagrass barn raised.", From 9687f716949c1b1b950c606ae9823a61a7d48422 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 15:53:15 +0400 Subject: [PATCH 083/152] Update upgrades.js --- js/data/upgrades.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 04272efa..f032f154 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4667,13 +4667,13 @@ SharkGame.Upgrades = { underwaterChemistry: {}, thermalVents: {}, laserRays: {}, - stabilization: {}, + agriculture: {}, //prev name: stabilization hardbarkCoating: {}, puppetAssembly: {}, fixModels: {}, puppetTeaching: {}, - tunnelExpedition: {}, - thingyRepairing: {}, + exploration: {}, + farExploration: {}, raiderTruce: {}, crystalTalons: {}, beyondwalkerPairing: {}, From 390a32c0a317167a6c9da27ef74dd9530f72fda7 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 16:04:34 +0400 Subject: [PATCH 084/152] -added prev names n stuff --- js/data/upgrades.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index f032f154..4d173707 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4672,8 +4672,8 @@ SharkGame.Upgrades = { puppetAssembly: {}, fixModels: {}, puppetTeaching: {}, - exploration: {}, - farExploration: {}, + exploration: {}, //prev name: tunnelExpedition + farExploration: {}, //prev name: thingyRepairing raiderTruce: {}, crystalTalons: {}, beyondwalkerPairing: {}, From 428b21bb83055ca5038e12abc77b00dbde5bd21e Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 16:15:19 +0400 Subject: [PATCH 085/152] -added code to the uniques --- js/data/homeactions.js | 98 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 88 insertions(+), 10 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 4f7c49f2..a0274be6 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4973,9 +4973,93 @@ SharkGame.HomeActions = { }, //end of machine code // UNIQUE ////////////////////// - getSafeholdSentinel: {}, //end of unique code - getBarrageBraver: {}, //end of unique code - getGatemasterPuppet: {}, //end of unique code + getSafeholdSentinel: { + name: "Repair Safehold Sentinel", + effect: { + resource: { + safeholdSentinel: 1, + }, + }, + cost: [ + { resource: "hardbark", costFunction: "unique", priceIncrease: 250 }, + { resource: "sharkonium", costFunction: "unique", priceIncrease: 25 }, + { resource: "crystal", costFunction: "unique", priceIncrease: 5 }, + ], + max: "safeholdSentinel", + prereq: { + resource: { + hardbark: 250, + sharkonium: 25, + crystal: 5, + }, + upgrade: ["farExploration"], + }, + outcomes: [ + "//*to be written in future*//", + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Repair the multi-armed thing above the big latch.", + }, //end of unique code + getBarrageBraver: { + ame: "Reconstruct Barrage Braver", + effect: { + resource: { + barrageBraver: 1, + }, + }, + cost: [ + { resource: "hardbark", costFunction: "unique", priceIncrease: 125 }, + { resource: "sharkonium", costFunction: "unique", priceIncrease: 125 }, + { resource: "crystal", costFunction: "unique", priceIncrease: 15 }, + ], + max: "barrageBraver", + prereq: { + resource: { + hardbark: 125, + sharkonium: 125, + crystal: 15, + }, + upgrade: ["taleHeeding"], + }, + outcomes: [ + "//*to be written in future*//", + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Reconstruct the Barrage Braver of beyondwalker legend.", + }, //end of unique code + getGatemasterPuppet: { + ame: "Scavenge Gatemaster", + effect: { + resource: { + gatemasterPuppet: 1, + }, + }, + cost: [ + { resource: "hardbark", costFunction: "unique", priceIncrease: 250 }, + { resource: "sharkonium", costFunction: "unique", priceIncrease: 25 }, + { resource: "crystal", costFunction: "unique", priceIncrease: 5 }, + ], + max: "gatemasterPuppet", + prereq: { + resource: { + hardbark: 250, + sharkonium: 25, + crystal: 5, + }, + upgrade: ["gatemasterScavenging"], + }, + outcomes: [ + "//*to be written in future*//", + ], + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Collect the scattered pieces of... whatever this is...", + }, //end of unique code // PLACES ///////////////////// getSeagrassFarm: { @@ -4987,13 +5071,7 @@ SharkGame.HomeActions = { }, cost: [ { resource: "seagrass", costFunction: "constant", priceIncrease: 1 }, - { - resource: "sand", - costFunction: "linear", - get priceIncrease() { - return SharkGame.Upgrades.purchased.includes("landReform") ? 50 : 250; - }, - }, + { resource: "sand", costFunction: "linear", priceIncrease: 50 }, ], max: "seagrassFarm", prereq: { From 243b165514b258645822127693e8ca00ecf3b75f Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 16:18:32 +0400 Subject: [PATCH 086/152] -added all upgrade placeholders (I hope) --- js/data/upgrades.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 4d173707..81ebabe7 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4681,6 +4681,11 @@ SharkGame.Upgrades = { seagrassAttention: {}, taleHeeding: {}, intelTowers: {}, + firstLog: {}, + secondLog: {}, + thirdLog: {}, + gatemasterScavenging: {}, + fullStability: {}, }, }, }; From 83a610826675765bde625664001cf59e88d36e2e Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 16:24:17 +0400 Subject: [PATCH 087/152] -alphabetised the shore code placement --- js/data/homeactions.js | 3530 ++++++++++++++++++++-------------------- 1 file changed, 1764 insertions(+), 1766 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index a0274be6..60ad1cba 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -2612,2552 +2612,2550 @@ SharkGame.HomeActions = { }, }, + //--------------------------------------------------- - shrouded: { + shore: { + + // FREEBIES ///////////////////// catchFish: {}, + debugButton: {}, - debugbutton: {}, - - getJellyfish: {}, - - // CONVERSIONS //////////////////////////////////////////////////////////////////////////////// + // PROCESSING //////////////////////////////////// + seagrasstoScience: {}, - jellyfishToScience: { - name: "Dismantle jellyfish", + // MAKE ADVANCED RESOURCES /////////////////////// + transmuteSharkonium: {}, + coatHardbark: { + name: "Coat driftwood to make hardbark", effect: { resource: { - science: 4, + hardbark: 1, }, }, - cost: [{ resource: "jellyfish", costFunction: "constant", priceIncrease: 1 }], - max: "jellyfish", + cost: [ + { resource: "crystal", costFunction: "constant", priceIncrease: 5}, + { resource: "driftwood", costFunction: "constant", priceIncrease: 1}, + ], + max: "hardbark", prereq: { - resource: { - jellyfish: 150, - }, - upgrade: ["xenobiology"], + upgrade: ["hardbarkCoating"], }, outcomes: [ - "Eww eww gross it's so gloopy and fragile and OW IT STUNG ME", - "These things are like a bag of wonders. Weird, tasteless wonders.", - "Wow, sea apples seemed weird, but these things barely exist.", - "Well, they turned out just as fragile as they looked.", - "So interesting!", + "Hardbark made. Yippee.", + "It’s just wood. In crystal.", + "A simple design, much like their inventors.", + "Yes, I suppose the crystal is really hard to coat with…", + "It’s… honestly a little impressive. For a fish, of course.", + "Gah. I’ve made so many typos trying to spell hardbark.", ], - helpText: "Examine the goop inside the stinging jellies! Discovery!", + helpText: "Coat sturdy driftwood pieces with crystal to make hardbark.", }, - makeSacrifice: { - name: "Perform Arcane Sacrifice", + // BUY ANIMALS ///////////////////////////////// + getShark: {}, //end of creature code + getManta: {}, //end of creature code + getCrab: {}, //end of creature code + getMudskipper: { + name: "Liberate mudskipper", effect: { resource: { - sacrifice: 1, + mudskipper: 1, }, }, - cost: [{ resource: "arcana", costFunction: "constant", priceIncrease: 1 }], - max: "arcana", + cost: [ + { resource: "fish", costFunction: "linear", priceIncrease: 1 }, + ], + max: "mudskipper", prereq: { - upgrade: ["arcaneSacrifice"], + upgrade: ["mudskipperContact"], }, outcomes: [ - "For the greater good.", - "For the good of us all.", - "The power within these shards is now ours.", - "The flash is dizzying, but the power is worth it.", - "The shards rupture into tiny pieces that disintegrate everywhere.", - "That familiar feeling.", - "Feel the power. Feel the flow of energy.", + "An atlantic mudskipper joins you.", + "A barred mudskipper joins you.", + "A common mudskipper joins you.", + "A Pearse’s mudskipper joins you.", + "A great blue spotted mudskipper joins you.", ], - helpText: - "Smash large quantities of arcana to release the energy contained within, so that it might be used for the greater good.", - }, - - // MAKE ADVANCED RESOURCES /////////////////////////////////////////////////////////////////////////////// - - transmuteSharkonium: {}, - - // BUY ANIMALS //////////////////////////////////////////////////////////////////////////////// - - getShark: { - name: "Recruit shark", + multiOutcomes: [ + "Yessss! More woooodddd!!", + "These will certainly be useful...", + "Heh. Look at how scared they are.", + "Do you think we’re being too hard on them?", + "We’re doing them a favour.", + "What, they think we’re gonna eat them?", + ], + helpText: "Liberate a mudskipper from its boring old life and command it to retrieve driftwood for you.", + }, //end of creature code + getCaracara: { + name: "Convince caracara", effect: { resource: { - shark: 1, + caracara: 1, }, }, - cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 5 }], - max: "shark", + cost: [ + { resource: "driftwood", costFunction: "linear", priceIncrease: 5 }, + ], + max: "caracara", prereq: { - resource: { - fish: 5, - }, + upgrade: ["raiderTruce"], }, outcomes: [ - "A bignose shark joins you.", - "A blacktip reef shark joins you.", - "A blue shark joins you.", - "A bull shark joins you.", - "A cat shark joins you.", - "A crocodile shark joins you.", - "A dusky whaler shark joins you.", - "A dogfish joins you.", - "A graceful shark joins you.", - "A grey reef shark joins you.", - "A goblin shark joins you.", - "A hammerhead shark joins you.", - "A hardnose shark joins you.", - "A lemon shark joins you.", - "A milk shark joins you.", - "A nervous shark joins you.", - "An oceanic whitetip shark joins you.", - "A pigeye shark joins you.", - "A sandbar shark joins you.", - "A silky shark joins you.", - "A silvertip shark joins you.", - "A sliteye shark joins you.", - "A speartooth shark joins you.", - "A spinner shark joins you.", - "A spot-tail shark joins you.", - "A mako shark joins you.", - "A tiger shark joins you.", - "A tawny shark joins you.", - "A white shark joins you.", - "A zebra shark joins you.", + "A striated caracara joins you.", + "A caracara awaits your command. Haughtily.", + "The caracara flies off with a task.", + "It gives you a strange look before it leaves.", + "The caracara accidentally sheds a feather as it lifts off.", ], multiOutcomes: [ - "A whole bunch of sharks join you.", - "That's a lot of sharks.", - "The shark community grows!", - "More sharks! MORE SHARKS!", - "Sharks for the masses. Mass sharks.", - "A shiver of sharks! No, that's a legit name. Look it up.", - "A school of sharks!", - "A shoal of sharks!", - "A frenzy of sharks!", - "A gam of sharks! Yes, that's correct.", - "A college of sharks! They're a little smarter than a school.", + "They await you in flocks.", + "They blot out the sun.", + "They cast a shadow upon all as they fly.", + "Their presence commands respect from all but us.", + "You know what, they're kinda like sharks when you think about it." ], - helpText: "Recruit a shark to help catch more fish.", - }, + helpText: "Convince a caracara from the surface to retrieve crystals.", + }, //end of creature code - getManta: { - name: "Hire ray", + // CRAB JOBS ///////////////////////////////// + getStabilizer: { + name: "Provide crab stabilizer", effect: { resource: { - ray: 1, + stabilizer: 1, }, }, - cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 15 }], - max: "ray", + cost: [ + { resource: "crab", costFunction: "linear", priceIncrease: 1 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 2 }, + { resource: "coral", costFunction: "linear", priceIncrease: 4 }, + ], + max: "stabilizer", prereq: { resource: { - shark: 10, + crab: 1, + coral: 4, + seagrass: 2, }, + upgrade: ["agriculture"], }, outcomes: [ - "These guys seem to be kicking up a lot of sand!", - "A spotted eagle ray joins you.", - "A manta ray joins you.", - "A stingray joins you.", - "A clownnose ray joins you.", - "A bluespotted maskray joins you.", - "A bluntnose stingray joins you.", - "A oman masked ray joins you.", - "A bulls-eye electric ray joins you.", - "A shorttailed electric ray joins you.", - "A bentfin devil ray joins you.", - "A lesser electric ray joins you.", - "A cortez electric ray joins you.", - "A feathertail stingray joins you.", - "A thornback ray joins you.", - "A giant shovelnose ray joins you.", - "A pacific cownose ray joins you.", - "A bluespotted ribbontail ray joins you.", - "A marbled ribbontail ray joins you.", - "A blackspotted torpedo ray joins you.", - "A marbled torpedo ray joins you.", - "A atlantic torpedo ray joins you.", - "A panther torpedo ray joins you.", - "A spotted torpedo ray joins you.", - "A ocellated torpedo joins you.", - "A caribbean torpedo joins you.", - "A striped stingaree joins you.", - "A sparesly-spotted stingaree joins you.", - "A kapala stingaree joins you.", - "A common stingaree joins you.", - "A eastern fiddler ray joins you.", - "A bullseye stingray joins you.", - "A round stingray joins you.", - "A yellow stingray joins you.", - "A cortez round stingray joins you.", - "A porcupine ray joins you.", - "A sepia stingaree joins you.", - "A banded stingaree joins you.", - "A spotted stingaree joins you.", - "A sea pancake joins you.", + "/*to be written in future*/", ], multiOutcomes: [ - "A whole bunch of rays join you.", - "That's a lot of rays.", - "The ray conspiracy grows!", - "I can't even deal with all of these rays.", - "More rays more rays more more more.", - "A school of rays!", - "A fever of rays! Yes, seriously. Look it up.", - "A whole lotta rays!", - "The sand is just flying everywhere!", - "So many rays.", + "/*to be written in future*/", ], - helpText: "Hire a ray to help collect fish. They might kick up some sand from the seabed.", + helpText: "Provide a crab with coral and seagrass to plant.", }, - getEel: { - name: "Hire eel", + // MUDSKIPPER JOBS /////////////////////////// + getBurrow: { + name: "Dig mudskipper burrow", effect: { resource: { - eel: 1, + burrow: 1, }, }, - cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 15 }], - max: "eel", + cost: [ + { resource: "mudskipper", costFunction: "constant", priceIncrease: 3 }, + { resource: "fish", costFunction: "linear", priceIncrease: 15 }, + { resource: "sand", costFunction: "linear", priceIncrease: 12 }, + ], + max: "burrow", prereq: { - upgrade: ["seabedGeology"], + resource: { + mudskipper: 1, + }, + upgrade: ["mudskipperBurrowing"], }, outcomes: [ - "A false moray joins you.", - "A mud eel joins you.", - "A spaghetti eel joins you.", - "A moray eel joins you.", - "A thin eel joins you.", - "A worm eel joins you.", - "A conger joins you.", - "A longneck eel joins you.", - "A pike conger joins you.", - "A duckbill eel joins you.", - "A snake eel joins you.", - "A snipe eel joins you.", - "A sawtooth eel joins you.", - "A cutthroat eel joins you.", - "An electric eel joins you.", - "A bobtail snipe eel joins you.", - "A silver eel joins you.", - "A long finned eel joins you.", - "A short finned eel joins you.", + "//*to be written in future*//", + ], multiOutcomes: [ - "Eels combining elements of the sharks and the eels to create something not quite as good as either.", - "The seabed sways with the arrival of new eels.", - "Fish and sand go hand in hand with eels! Well, fin and fin.", - "Don't mess with the creatures with jaws inside their jaws.", - "Eel nation arise!", - "That's a lot of eels.", - "So there's more eels. Whee.", - "The eels increase in number.", - "More eels happened. Yay.", + "//*to be written in future*//", ], - helpText: "Offer a new home and fish supply to an eel. They can round up fish and sand.", - }, - - getChimaera: { - name: "Procure chimaera", + helpText: "Allow a mudskipper to dig a burrow to do some weird flailing or something.", + }, //end of job code + getMentor: { + name: "Train mudskipper mentor", effect: { resource: { - chimaera: 1, + mentor: 1, }, }, - cost: [{ resource: "jellyfish", costFunction: "linear", priceIncrease: 20 }], - max: "chimaera", + cost: [ + { resource: "mudskipper", costFunction: "constant", priceIncrease: 1 }, + { resource: "science", costFunction: "linear", priceIncrease: 15 }, + { resource: "hardbark", costFunction: "linear", priceIncrease: 4 }, + ], + max: "mentor", prereq: { resource: { - jellyfish: 20, + mudskipper: 1, }, - upgrade: ["chimaeraReunification"], + upgrade: ["puppetTeaching"], }, outcomes: [ - "A ploughnose chimaera joins you.", - "A cape elephantfish joins you.", - "An australian ghost shark joins you.", - "A whitefin chimaera joins you.", - "A bahamas ghost shark joins you.", - "A southern chimaera joins you.", - "A longspine chimaera joins you.", - "A cape chimaera joins you.", - "A shortspine chimaera joins you.", - "A leopard chimaera joins you.", - "A silver chimaera joins you.", - "A pale ghost shark joins you.", - "A spotted ratfish joins you.", - "A philippine chimaera joins you.", - "A black ghostshark joins you.", - "A blackfin ghostshark joins you.", - "A marbled ghostshark joins you.", - "A striped rabbitfish joins you.", - "A large-eyed rabbitfish joins you.", - "A spookfish joins you.", - "A dark ghostshark joins you.", - "A purple chimaera joins you.", - "A pointy-nosed blue chimaera joins you.", - "A giant black chimaera joins you.", - "A smallspine spookfish joins you.", - "A pacific longnose chimaera joins you.", - "A dwarf sicklefin chimaera joins you.", - "A sicklefin chimaera joins you.", - "A paddle-nose chimaera joins you.", - "A straightnose rabbitfish joins you.", + "//*to be written in future*//", + ], multiOutcomes: [ - "Many chimaeras come from the deep.", - "Like ghosts, they come.", - "The chimaeras avert your gaze, but set to work quickly.", - "The jellyfish stocks shall climb ever higher!", - "Well, it saves you the effort of braving the stinging tentacles.", - "What have they seen, deep in the chasms?", - "They aren't sharks, but they feel so familiar.", - "The long-lost kindred return.", + "//*to be written in future*//", ], - helpText: "Convince a chimaera to hunt in the darker depths for us.", - }, - - // SHARK JOBS //////////////////////////////////////////////////////////////////////////////// - - getDiver: { - name: "Prepare diver shark", + helpText: "Teach a mudskipper techniques on puppet work, so that it may pass on its knowledge.", + }, //end of job code + + // CARACARA JOBS /////////////////////////// + getRetrievalDuo: { + name: "Pair retrieval duo", effect: { resource: { - diver: 1, + retrievalDuo: 1, }, }, cost: [ - { resource: "shark", costFunction: "constant", priceIncrease: 1 }, - { resource: "fish", costFunction: "linear", priceIncrease: 30 }, + { resource: "mudskipper", costFunction: "constant", priceIncrease: 1 }, + { resource: "caracara", costFunction: "linear", priceIncrease: 1 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 5 }, ], - max: "diver", + max: "retrievalDuo", prereq: { resource: { - shark: 3, + caracara: 1, + mudskipper: 1 }, + upgrade: ["beyondwalkerPairing"], }, outcomes: [ - "Well, better you than me.", - "Good luck down there!", - "You're doing good work for us, diver shark.", - "Fare well on your expeditions, shark!", + "//*to be written in future*//", + ], multiOutcomes: [ - "Follow the crystals!", - "We will find the secrets of the deep!", - "Brave the deep!", - "Find the crystals for science!", - "Deep, dark, scary waters. Good luck, all of you.", + "//*to be written in future*//", ], - helpText: "Let a shark go deep into the darkness for more crystals and whatever else they may find.", - }, - - getScientist: { - name: "Train science shark", + helpText: "Leave an armoured mudskipper on a platform for a caracara to take and search for driftwood.", + }, //end of job code + getConnoisseur: { + name: "Employ connoisseur", effect: { resource: { - scientist: 1, + connoisseur: 1, }, }, cost: [ - { resource: "shark", costFunction: "constant", priceIncrease: 1 }, - { resource: "crystal", costFunction: "linear", priceIncrease: 20 }, + { resource: "caracara", costFunction: "constant", priceIncrease: 1 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 5 }, ], - max: "scientist", + max: "connoisseur", prereq: { resource: { - crystal: 20, - shark: 1, + caracara: 1, + seagrass: 5, }, + upgrade: ["seagrassAttention"], }, outcomes: [ - "Doctor Shark, coming right up!", - "A scientist shark is revealed!", - "After many painful years of study, a shark that has developed excellent skills in making excuses-- er, in science!", - "PhD approved!", - "Graduation complete!", - "A new insight drives a new shark to take up the cause of science!", + "//*to be written in future*//", + ], multiOutcomes: [ - "The training program was a success!", - "Look at all this science!", - "Building a smarter, better shark!", - "Beakers! Beakers underwater! It's madness!", - "Let the science commence!", - "Underwater clipboards! No I don't know how that works either!", - "Careful teeth record the discoveries!", + "//*to be written in future*//", ], - helpText: "Train a shark in the fine art of research and the science of, well, science.", - }, + helpText: "Get a caracara interested in seagrass to walk along shores laden with it.", + }, //end of job code - getNurse: { - name: "Train nurse shark", + // MUDSKIPPER PUPPETS ////////////////////// + getCoralCollector: { + name: "Assemble coral collector", effect: { resource: { - nurse: 1, + coralCollector: 1, }, }, cost: [ - { resource: "shark", costFunction: "constant", priceIncrease: 1 }, - { resource: "fish", costFunction: "linear", priceIncrease: 100 }, + { resource: "hardbark", costFunction: "linear", priceIncrease: 50 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 10 }, + { resource: "crab", costFunction: "linear", priceIncrease: 1 }, ], - max: "nurse", + max: "coralCollector", prereq: { resource: { - shark: 1, + hardbark: 50, }, - upgrade: ["biology"], + upgrade: ["puppetAssembly"], }, outcomes: [ - "A nurse shark is ready!", - "Shark manufacturer primed.", - "Nurse shark trained.", - "Medical exam passed! Nurse shark is go!", + "//*to be written in future*//", ], multiOutcomes: [ - "More sharks are on the way soon.", - "Shark swarm begins!", - "There will be no end to the sharks!", - "Sharks forever!", - "The sharks will never end. The sharks are eternal.", - "More sharks to make more sharks to make more sharks...", + "//*to be written in future*//", ], - helpText: "Remove a shark from fish duty and set them to shark making duty.", - }, - - // RAY JOBS //////////////////////////////////////////////////////////////////////////////// - - getMaker: { - name: "Instruct a ray maker", + helpText: "Put together a crablike puppet to harvest coral with serrated claws.", + }, //end of machine code + getShoreQueller: { + name: "Assemble shore queller", effect: { resource: { - maker: 1, + shoreQueller: 1, }, }, cost: [ - { resource: "ray", costFunction: "constant", priceIncrease: 1 }, - { resource: "fish", costFunction: "linear", priceIncrease: 400 }, + { resource: "hardbark", costFunction: "linear", priceIncrease: 75 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 50 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 15 }, + { resource: "shark", costFunction: "linear", priceIncrease: 1 }, ], - max: "maker", + max: "shoreQueller", prereq: { resource: { - ray: 1, + hardbark: 75, }, - upgrade: ["rayBiology"], + upgrade: ["puppetAssembly"], + upgrade: ["laserRays"], }, outcomes: [ - "More rays lets you get more rays which you can then use to get more rays.", - "The ray singularity begins!", - "A ray maker is ready.", - "Looks like you gave them quite the ray maker blow! 'Them' being the intangible enemy that is lacking in resources.", - "The ray seems concerned, but obliges. The mission has been given.", + "//*to be written in future*//", ], multiOutcomes: [ - "All these makers. What are they making? What is it for? Oh. It's rays, and it's probably for sand or something.", - "More ray makers means more rays. Do you understand what that means?! Do you?! It means more rays. Good. On the same page, then.", - "Rapidly breeding aquatic wildlife is probably a severe ecological hazard. Good thing this isn't Earth's oceans, probably!", - "Have you ever thought about what the rays wanted? Because this might have been what they wanted after all.", + "//*to be written in future*//", ], - helpText: "Remove a ray from sand business and let them concentrate on making more rays.", - }, - - getScholar: { - name: "Train ray scholar", + helpText: "Put together a wormlike puppet to plant seagrass and laser up rough sand.", + }, // end of machine code + getDriftwoodSnarer: { + name: "Assemble driftwood snarer", effect: { resource: { - scholar: 1, + driftwoodSnarer: 1, }, }, cost: [ - { resource: "ray", costFunction: "constant", priceIncrease: 1 }, - { resource: "crystal", costFunction: "linear", priceIncrease: 250 }, + { resource: "hardbark", costFunction: "linear", priceIncrease: 25 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 25 }, + { resource: "ray", costFunction: "linear", priceIncrease: 1 }, ], - max: "scholar", + max: "driftwoodSnarer", prereq: { - upgrade: ["arcaneStudy"], + resource: { + hardbark: 25, + seagrass: 15, + }, + upgrade: ["puppetAssembly"], }, outcomes: [ - "Study buddy!", - "Another scholar receives their doctorate in magical stuff.", - "The ray receives their degree.", - "The ray receives a certificate.", - "Ray, ready to learn!", - "Congratulations buddy, you've earned the right to speculate about weird fragment thingies!", + "//*to be written in future*//", ], multiOutcomes: [ - "No, not ray scientists, scholars!", - "Curious minds begin to tinker and toy with the strange substance that composes arcana.", - "Just how much is there to learn about this stuff?", - "They don't do science. They do study.", - "The other side of the coin of research.", - "The scientists and the scholars rarely collaborate, so they form their own schools.", + "//*to be written in future*//", ], - helpText: "Train a ray to study the mystical properties of arcana.", - }, - - // EEL JOBS //////////////////////////////////////////////////////////////////////////////// - - getPit: { - name: "Dig eel pit", + helpText: "Put together a raylike puppet to catch driftwood in a seagrass net.", + }, //end of machine code + getHardbarkSmith: { + name: "Assemble hardbark smith", effect: { resource: { - pit: 1, + hardbarkSmith: 1, }, }, cost: [ - { resource: "eel", costFunction: "constant", priceIncrease: 3 }, - { resource: "fish", costFunction: "linear", priceIncrease: 50 }, - { resource: "sand", costFunction: "linear", priceIncrease: 20 }, + { resource: "hardbark", costFunction: "linear", priceIncrease: 50 }, + { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 15 }, + { resource: "mudskipper", costFunction: "linear", priceIncrease: 1 }, ], - max: "pit", + max: "hardbarkSmith", prereq: { resource: { - eel: 1, + hardbark: 50, + sharkonium: 25, }, - upgrade: ["eelHabitats"], + upgrade: ["puppetAssembly"], }, outcomes: [ - "Why does it take three eels? Oh well. We don't really need to know.", - "Dig that pit. We can dig it.", - "Let's get digging.", - "Oh, hey, this hole's already empty. Well, isn't that something.", + "//*to be written in future*//", ], multiOutcomes: [ - "Let's get digging.", - "Eel tide rises.", - "More eels! They're handy to have.", - "Many eyes from the caves.", - "Secret homes!", - "The eels are content.", + "//*to be written in future*//", ], - helpText: "Find a suitable pit for eels to make more eels.", - }, + helpText: "Put together a clawed, orblike puppet to coat hardbark in a dish.", + }, //end of machine code - getSifter: { - name: "Train eel sifter", + // UNIQUE ////////////////////// + getSafeholdSentinel: { + name: "Repair Safehold Sentinel", effect: { resource: { - sifter: 1, + safeholdSentinel: 1, }, }, cost: [ - { resource: "eel", costFunction: "constant", priceIncrease: 1 }, - { resource: "fish", costFunction: "linear", priceIncrease: 1000 }, + { resource: "hardbark", costFunction: "unique", priceIncrease: 250 }, + { resource: "sharkonium", costFunction: "unique", priceIncrease: 25 }, + { resource: "crystal", costFunction: "unique", priceIncrease: 5 }, ], - max: "sifter", + max: "safeholdSentinel", prereq: { - upgrade: ["arcaneSifting"], + resource: { + hardbark: 250, + sharkonium: 25, + crystal: 5, + }, + upgrade: ["farExploration"], }, outcomes: [ - "Eel sifter ready to find things!", - "Eel ready to sift through the sands!", - "Time to sift, eel. Time to seek, search and sift.", - "Time for this little guy to find some goodies.", + "//*to be written in future*//", ], multiOutcomes: [ - "Time to find the things!", - "Sift. It's a fun word. Siiiiffft.", - "Sifters scouring the seabed for some special stuff.", - "Shifters ready to shift! Wait. No. Hang on.", - "Sifting the seabed for scores of surprises!", + "//*to be written in future*//", ], - helpText: "Specialise an eel in finding interesting things on the seabed.", - }, - - // CHIMAERA JOBS //////////////////////////////////////////////////////////////////////////////// - - getExplorer: { - name: "Prepare chimaera explorer", + helpText: "Repair the multi-armed thing above the big latch.", + }, //end of unique code + getBarrageBraver: { + ame: "Reconstruct Barrage Braver", effect: { resource: { - explorer: 1, + barrageBraver: 1, }, }, cost: [ - { resource: "chimaera", costFunction: "constant", priceIncrease: 1 }, - { resource: "jellyfish", costFunction: "linear", priceIncrease: 150 }, + { resource: "hardbark", costFunction: "unique", priceIncrease: 125 }, + { resource: "sharkonium", costFunction: "unique", priceIncrease: 125 }, + { resource: "crystal", costFunction: "unique", priceIncrease: 15 }, ], - max: "explorer", + max: "barrageBraver", prereq: { - upgrade: ["abyssalEnigmas"], + resource: { + hardbark: 125, + sharkonium: 125, + crystal: 15, + }, + upgrade: ["taleHeeding"], }, outcomes: [ - "A seeker of mysteries is prepared.", - "The chimaera explorer is ready for their journey.", - "Explorer ready for some answers!", - "The chimaera swims down to the ocean below.", + "//*to be written in future*//", ], multiOutcomes: [ - "The exploration party is ready.", - "Learn the secrets of the deeps!", - "More mysteries to uncover.", - "Ancient riddles for ancient creatures.", - "Find the truth beneath the waves!", + "//*to be written in future*//", ], - helpText: - "Help prepare a chimaera for exploration to parts unknown in search of the mysterious and elusive arcana.", - }, - - // SHARK MACHINES //////////////////////////////////////////////////////////////////////////////// - - getCrystalMiner: {}, - - getSandDigger: {}, - - getFishMachine: {}, - - getAutoTransmuter: {}, - }, - -//--------------------------------------------------- - marine: { - catchFish: {}, - - debugbutton: {}, - - getClam: { - name: "Get clam", + helpText: "Reconstruct the Barrage Braver of beyondwalker legend.", + }, //end of unique code + getGatemasterPuppet: { + ame: "Scavenge Gatemaster", effect: { resource: { - get clam() { - return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; - }, + gatemasterPuppet: 1, }, }, - cost: {}, - prereq: { - upgrade: ["clamScooping"], - }, - outcomes: [ - "Got a grooved carpet shell.", - "Got a hard clam.", - "Got a manila clam.", - "Got a soft clam.", - "Got an atlantic surf clam.", - "Got an ocean quahog.", - "Got a pacific razor clam.", - "Got a pismo clam.", - "Got a geoduck.", - "Got an atlantic jackknife clam.", - "Got a lyrate asiatic hard clam.", - "Got an ark clam.", - "Got a nut clam.", - "Got a duck clam.", - "Got a marsh clam.", - "Got a file clam.", - "Got a giant clam.", - "Got an asiatic clam.", - "Got a peppery furrow shell.", - "Got a pearl oyster.", + cost: [ + { resource: "hardbark", costFunction: "unique", priceIncrease: 250 }, + { resource: "sharkonium", costFunction: "unique", priceIncrease: 25 }, + { resource: "crystal", costFunction: "unique", priceIncrease: 5 }, ], - helpText: "Fetch a clam. Why do we need clams now? Who knows.", - }, - - // CONVERSIONS //////////////////////////////////////////////////////////////////////////////// - - seaApplesToScience: { - name: "Study sea apples", - effect: { - resource: { - science: 4, - }, - }, - cost: [{ resource: "seaApple", costFunction: "constant", priceIncrease: 1 }], - max: "seaApple", + max: "gatemasterPuppet", prereq: { resource: { - seaApple: 1, + hardbark: 250, + sharkonium: 25, + crystal: 5, }, - upgrade: ["xenobiology"], + upgrade: ["gatemasterScavenging"], }, outcomes: [ - "There's science inside these things, surely!", - "The cause of science is advanced!", - "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...", + "//*to be written in future*//", ], - helpText: "Dissect the sea apples our kelp attracts to gain additional science. Research!", - }, + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Collect the scattered pieces of... whatever this is...", + }, //end of unique code - pearlConversion: { - name: "Convert clam pearls", + // PLACES ///////////////////// + getSeagrassFarm: { + name: "Construct seagrass farm", effect: { resource: { - get crystal() { - if (SharkGame.Upgrades.purchased.includes("highEnergyFusion")) return 5; - return 1; - }, + seagrassFarm: 1, }, }, cost: [ - { - resource: "clam", - costFunction: "constant", - get priceIncrease() { - if (SharkGame.Upgrades.purchased.includes("highEnergyFusion")) return 1; - return 5; - }, - }, - ], - max: "clam", + { resource: "seagrass", costFunction: "constant", priceIncrease: 1 }, + { resource: "sand", costFunction: "linear", priceIncrease: 50 }, + ], + max: "seagrassFarm", prereq: { - resource: { - clam: 1, - }, - upgrade: ["pearlConversion"], + upgrade: ["agriculture"], }, outcomes: [ - "Pearls to crystals! One day. One day, we will get this right and only use the pearl.", - "Welp, we somehow turned rocks to crystals. Oh. Nope, those were clams. Not rocks. It's so hard to tell sometimes.", - "Okay, we managed to only use the pearls this time, but we, uh, had to break the clams open pretty roughly.", - "Pearls to... nope. Clams to crystals. Science is hard.", + "Seagrass farm constructed, seagrass barn raised.", + "Now growing seagrass in this general location.", + "Sand tilled. Seagrass planted.", + "'Right here, this will be a farm!' And so it was.", + "Stabilizing the seabed one farm at a time!", ], - helpText: "Convert pearls (and the clams around them) into crystal.", - }, - - // MAKE ADVANCED RESOURCES /////////////////////////////////////////////////////////////////////////////// - - transmuteSharkonium: { - name: "Transmute stuff to sharkonium", + multiOutcomes: [ + "Do we really need to till the sand to grow seagrass?", + "Grow, seagrass! Grow!", + "The connoisseurs are pleased.", + "Is anybody staffing these?", + "Farms are a-go.", + "Designated growing spots.", + "Imagine how much science must be in this place. + ], + helpText: "Pick a spot and set up a seagrass farm there.", + }, //end of place code + getExchangeStation: { + name: "Set up exchange station", effect: { resource: { - sharkonium: 1, + exchangeStation: 1, }, }, cost: [ - { - resource: "crystal", - costFunction: "constant", - get priceIncrease() { - return 5 - SharkGame.Aspects.syntheticTransmutation.level; - }, - }, - { - resource: "sand", - costFunction: "constant", - get priceIncrease() { - return 15 - 3 * SharkGame.Aspects.syntheticTransmutation.level; - }, - }, + { resource: "driftwood", costFunction: "linear", priceIncrease: 50 }, + { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, + { resource: "coral", costFunction: "linear", priceIncrease: 15 }, ], - max: "sharkonium", + max: "exchangeStation", prereq: { - upgrade: ["transmutation"], + resource: { + driftwood: 50, + sharkonium: 25, + coral: 15, + }, + upgrade: ["platformExpansion"], }, outcomes: [ - "Transmutation destination!", - "Transmutation rejuvenation!", - "Transmogrification revelation!", - "Transformation libation!", - "Transfiguration nation! ...wait.", - "Sharkonium arise!", - "Arise, sharkonium!", - "More sharkonium!", - "The substance that knows no name! Except the name sharkonium!", - "The substance that knows no description! It's weird to look at.", - "The foundation of a modern shark frenzy!", + "//*to be written in future*//", ], - helpText: "Convert ordinary resources into sharkonium, building material of the future!", - }, - - fuseCalcinium: { - name: "Fuse stuff to calcinium", + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Build an abovewater-extending station for the frenzy to use.", + }, //end of place code + getReceiverNode: { + name: "Construct receiver node", effect: { resource: { - calcinium: 1, + receiverNode: 1, }, }, cost: [ - { - resource: "clam", - costFunction: "constant", - get priceIncrease() { - return 15 - 3 * SharkGame.Aspects.syntheticTransmutation.level; - }, - }, - { - resource: "crystal", - costFunction: "constant", - get priceIncrease() { - return 5 - SharkGame.Aspects.syntheticTransmutation.level; - }, - }, + { resource: "hardbark", costFunction: "linear", priceIncrease: 50 }, + { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 5 }, ], - max: "calcinium", + max: "receiverNode", prereq: { - upgrade: ["calciniumStudies"], + resource: { + hardbark: 50, + sharkonium: 25, + crystal: 5, + }, + upgrade: ["intelTowers"], }, outcomes: [ - "Fusion complete.", - "Clams sacrificed.", - "The fresh calcinium boils the water around it as it cools.", - "The clams and crystals meld together into a single unit.", - "The structures of the clams and crystals interlock, then solidify.", - "Bits of debris shoot out, glowing with heat as two become one.", - "Onlookers watch in awe as the lightshow goes on.", - "The pearl works its magic.", - "Completed fusion.", + "//*to be written in future*//", ], - helpText: "Smelt resources into calcinium for use in crustacean machines.", - }, + multiOutcomes: [ + "//*to be written in future*//", + ], + helpText: "Build a tall spire for extra collection of intel.", + }, //end of place code + }, - // BUY ANIMALS //////////////////////////////////////////////////////////////////////////////// - getShark: {}, +//--------------------------------------------------- + shrouded: { + catchFish: {}, - getManta: {}, + debugbutton: {}, - getCrab: {}, + getJellyfish: {}, - getLobster: { - name: "Gain lobster", + // CONVERSIONS //////////////////////////////////////////////////////////////////////////////// + + jellyfishToScience: { + name: "Dismantle jellyfish", effect: { resource: { - lobster: 1, + science: 4, }, }, - cost: [{ resource: "clam", costFunction: "linear", priceIncrease: 10 }], - max: "lobster", + cost: [{ resource: "jellyfish", costFunction: "constant", priceIncrease: 1 }], + max: "jellyfish", prereq: { resource: { - clam: 10, + jellyfish: 150, }, - upgrade: ["clamScooping"], + upgrade: ["xenobiology"], }, outcomes: [ - "A scampi joins you.", - "A crayfish joins you.", - "A clawed lobster joins you.", - "A spiny lobster joins you.", - "A slipper lobster joins you.", - "A hummer lobster joins you.", - "A crawfish joins you.", - "A rock lobster joins you.", - "A langouste joins you.", - "A shovel-nose lobster joins you.", - "A crawdad joins you.", - ], - multiOutcomes: [ - "Lobsters lobsters lobsters lobsters.", - "But they weren't rocks...", - "The clam forecast is looking good!", - "They're all about the clams!", - "More lobsters, because why not?", - "HEAVY LOBSTERS", - "More lobsters for the snipping and the cutting and the clam grab!", - "Clam patrol, here we go.", + "Eww eww gross it's so gloopy and fragile and OW IT STUNG ME", + "These things are like a bag of wonders. Weird, tasteless wonders.", + "Wow, sea apples seemed weird, but these things barely exist.", + "Well, they turned out just as fragile as they looked.", + "So interesting!", ], - helpText: "Hire a lobster to scoop up clams for us.", + helpText: "Examine the goop inside the stinging jellies! Discovery!", }, - // SHARK JOBS //////////////////////////////////////////////////////////////////////////////// - - getScientist: {}, - - getNurse: {}, - - // RAY JOBS //////////////////////////////////////////////////////////////////////////////// - - getMaker: {}, - - getClamScavenger: { - name: "Equip clam scavenger", + makeSacrifice: { + name: "Perform Arcane Sacrifice", effect: { resource: { - clamScavenger: 1, + sacrifice: 1, }, }, - cost: [ - { resource: "ray", costFunction: "constant", priceIncrease: 1 }, - { resource: "calcinium", costFunction: "linear", priceIncrease: 15 }, - { resource: "fish", costFunction: "linear", priceIncrease: 1000 }, - ], - max: "clamScavenger", + cost: [{ resource: "arcana", costFunction: "constant", priceIncrease: 1 }], + max: "arcana", prereq: { - resource: { - calcinium: 1, - }, - upgrade: ["calciniumRobotics"], + upgrade: ["arcaneSacrifice"], }, outcomes: [ - "Scavenger ready to scavenge.", - "Claw arm operational.", - "Arm training complete.", - "One ray, able to use goofy oversized arm, coming right up.", - "A ray, ready to have a big arm do its job for it.", - "Ray equipped.", - "Ray ready to indiscriminately tear up the seabed.", - ], - multiOutcomes: [ - "These arms are big.", - "Scoop scoop scoop.", - "Expensive equipment equipped.", - "Directive: dig clams.", - "The faint sound of grinding stone fills the water.", - "Why a crab claw? why not a lobster? Actually, wait...is there a difference?", + "For the greater good.", + "For the good of us all.", + "The power within these shards is now ours.", + "The flash is dizzying, but the power is worth it.", + "The shards rupture into tiny pieces that disintegrate everywhere.", + "That familiar feeling.", + "Feel the power. Feel the flow of energy.", ], - helpText: "Strap a big goofy claw arm to a ray and train it to scoop huge amounts of clams.", + helpText: + "Smash large quantities of arcana to release the energy contained within, so that it might be used for the greater good.", }, - // CRAB JOBS //////////////////////////////////////////////////////////////////////////////// + // MAKE ADVANCED RESOURCES /////////////////////////////////////////////////////////////////////////////// - getPlanter: {}, + transmuteSharkonium: {}, - getBrood: {}, + // BUY ANIMALS //////////////////////////////////////////////////////////////////////////////// - getSeabedStripper: { - name: "Equip seabed stripper", + getShark: { + name: "Recruit shark", effect: { resource: { - seabedStripper: 1, + shark: 1, }, }, - cost: [ - { resource: "calcinium", costFunction: "linear", priceIncrease: 150 }, - { resource: "planter", costFunction: "constant", priceIncrease: 1 }, - ], - max: "seabedStripper", + cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 5 }], + max: "shark", prereq: { resource: { - calcinium: 1, + fish: 5, }, - upgrade: ["calciniumRobotics"], }, outcomes: [ - "Planter has been upgraded.", - "Seabed stripper, ready to destroy the forests.", - "One seabed stripper, ready to pretend to be a sea spider.", - "One snippy crab coming right up.", - "Snip.", - "The crab gestures with all its claws.", - "Promoted a planter.", - "Improved a planter.", + "A bignose shark joins you.", + "A blacktip reef shark joins you.", + "A blue shark joins you.", + "A bull shark joins you.", + "A cat shark joins you.", + "A crocodile shark joins you.", + "A dusky whaler shark joins you.", + "A dogfish joins you.", + "A graceful shark joins you.", + "A grey reef shark joins you.", + "A goblin shark joins you.", + "A hammerhead shark joins you.", + "A hardnose shark joins you.", + "A lemon shark joins you.", + "A milk shark joins you.", + "A nervous shark joins you.", + "An oceanic whitetip shark joins you.", + "A pigeye shark joins you.", + "A sandbar shark joins you.", + "A silky shark joins you.", + "A silvertip shark joins you.", + "A sliteye shark joins you.", + "A speartooth shark joins you.", + "A spinner shark joins you.", + "A spot-tail shark joins you.", + "A mako shark joins you.", + "A tiger shark joins you.", + "A tawny shark joins you.", + "A white shark joins you.", + "A zebra shark joins you.", ], multiOutcomes: [ - "Snip snip snip.", - "The claws rip into kelp like a synchronized dance.", - "The sound of plants ripping fills the water.", - "Directive: extract kelp from forests.", - "Many small snippers come to life and begin snipping through kelp at incredible speed.", - "The crabs join another group headed out in search of new forests.", - "Too many arms, honestly.", + "A whole bunch of sharks join you.", + "That's a lot of sharks.", + "The shark community grows!", + "More sharks! MORE SHARKS!", + "Sharks for the masses. Mass sharks.", + "A shiver of sharks! No, that's a legit name. Look it up.", + "A school of sharks!", + "A shoal of sharks!", + "A frenzy of sharks!", + "A gam of sharks! Yes, that's correct.", + "A college of sharks! They're a little smarter than a school.", ], - helpText: "Equip a planter with many additional arms for maximum efficiency.", + helpText: "Recruit a shark to help catch more fish.", }, - // LOBSTER JOBS //////////////////////////////////////////////////////////////////////////////// - - getBerrier: { - name: "Form lobster berrier", + getManta: { + name: "Hire ray", effect: { resource: { - berrier: 1, + ray: 1, }, }, - cost: [ - { resource: "lobster", costFunction: "constant", priceIncrease: 1 }, - { resource: "clam", costFunction: "linear", priceIncrease: 30 }, - ], - max: "berrier", + cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 15 }], + max: "ray", prereq: { resource: { - lobster: 1, + shark: 10, }, - upgrade: ["crustaceanBiology"], }, outcomes: [ - "We didn't need to see the process behind this.", - "One lobster brimming with eggs to go.", - "It's like some weird counterpart to the planter crab. But with eggs.", - "Lobster with rocks ready to make a move. Oh, okay, eggs, whatever, see, they look like shiny pebbles from a distance and... oh, forget it.", + "These guys seem to be kicking up a lot of sand!", + "A spotted eagle ray joins you.", + "A manta ray joins you.", + "A stingray joins you.", + "A clownnose ray joins you.", + "A bluespotted maskray joins you.", + "A bluntnose stingray joins you.", + "A oman masked ray joins you.", + "A bulls-eye electric ray joins you.", + "A shorttailed electric ray joins you.", + "A bentfin devil ray joins you.", + "A lesser electric ray joins you.", + "A cortez electric ray joins you.", + "A feathertail stingray joins you.", + "A thornback ray joins you.", + "A giant shovelnose ray joins you.", + "A pacific cownose ray joins you.", + "A bluespotted ribbontail ray joins you.", + "A marbled ribbontail ray joins you.", + "A blackspotted torpedo ray joins you.", + "A marbled torpedo ray joins you.", + "A atlantic torpedo ray joins you.", + "A panther torpedo ray joins you.", + "A spotted torpedo ray joins you.", + "A ocellated torpedo joins you.", + "A caribbean torpedo joins you.", + "A striped stingaree joins you.", + "A sparesly-spotted stingaree joins you.", + "A kapala stingaree joins you.", + "A common stingaree joins you.", + "A eastern fiddler ray joins you.", + "A bullseye stingray joins you.", + "A round stingray joins you.", + "A yellow stingray joins you.", + "A cortez round stingray joins you.", + "A porcupine ray joins you.", + "A sepia stingaree joins you.", + "A banded stingaree joins you.", + "A spotted stingaree joins you.", + "A sea pancake joins you.", ], multiOutcomes: [ - "Berrier isn't even a word!", - "Berries and eggs aren't even the same thing!", - "How do these things swim with this much weighing them down?", - "We aren't running out of volunteers any time soon.", - "Did you see them fight for this job? Claws everywhere, I tell you!", + "A whole bunch of rays join you.", + "That's a lot of rays.", + "The ray conspiracy grows!", + "I can't even deal with all of these rays.", + "More rays more rays more more more.", + "A school of rays!", + "A fever of rays! Yes, seriously. Look it up.", + "A whole lotta rays!", + "The sand is just flying everywhere!", + "So many rays.", ], - helpText: "Dedicate a lobster to egg production. We don't know how it works. Ask the lobsters.", + helpText: "Hire a ray to help collect fish. They might kick up some sand from the seabed.", }, - // SHARK MACHINES //////////////////////////////////////////////////////////////////////////////// - - getCrystalMiner: {}, - - getSandDigger: {}, - - getFishMachine: {}, - - getAutoTransmuter: {}, - - // CRUSTACEAN MACHINES ///////////////////////////////////////////////////////// - - getCalciniumConverter: { - name: "Assemble calcinium converter", + getEel: { + name: "Hire eel", effect: { resource: { - calciniumConverter: 1, + eel: 1, }, }, - cost: [ - { resource: "calcinium", costFunction: "linear", priceIncrease: 100 }, - { resource: "lobster", costFunction: "constant", priceIncrease: 1 }, - ], - max: "calciniumConverter", + cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 15 }], + max: "eel", prereq: { - resource: { - calcinium: 1, - }, - upgrade: ["calciniumCybernetics"], + upgrade: ["seabedGeology"], }, outcomes: [ - "One lobster-turned-cyborg coming right up.", - "Incoming cyborg.", - "Lobster has been augmented.", - "The lobster gets to work immediately.", - "The lobster ignores your presence as it searches for materials.", - "The converter begins to convert.", - "The converter asks for materials.", + "A false moray joins you.", + "A mud eel joins you.", + "A spaghetti eel joins you.", + "A moray eel joins you.", + "A thin eel joins you.", + "A worm eel joins you.", + "A conger joins you.", + "A longneck eel joins you.", + "A pike conger joins you.", + "A duckbill eel joins you.", + "A snake eel joins you.", + "A snipe eel joins you.", + "A sawtooth eel joins you.", + "A cutthroat eel joins you.", + "An electric eel joins you.", + "A bobtail snipe eel joins you.", + "A silver eel joins you.", + "A long finned eel joins you.", + "A short finned eel joins you.", ], multiOutcomes: [ - "Lasers charged.", - "Fusion beams ready.", - "Future!?", - "Directive: automate.", - "Setting phasers to fuse...", - "The power of the sun in an attached limb!", - "Focus. Focus. Come on...fuse!", - "Two becomes one.", + "Eels combining elements of the sharks and the eels to create something not quite as good as either.", + "The seabed sways with the arrival of new eels.", + "Fish and sand go hand in hand with eels! Well, fin and fin.", + "Don't mess with the creatures with jaws inside their jaws.", + "Eel nation arise!", + "That's a lot of eels.", + "So there's more eels. Whee.", + "The eels increase in number.", + "More eels happened. Yay.", ], - helpText: "Modify a lobster to fuse calcinium with cool cyborg laser beams.", // This crustacean machine distributes lobster eggs for optimal hatching conditions. + helpText: "Offer a new home and fish supply to an eel. They can round up fish and sand.", }, - }, - -//--------------------------------------------------- - volcanic: { - // FREEBIES //////////////////////////////////////////////////////////////////////////////// - - catchFish: {}, - - debugbutton: {}, - prySponge: { + getChimaera: { + name: "Procure chimaera", effect: { - events: ["volcanicTallyPrySponge"], resource: { - get sponge() { - return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; - }, + chimaera: 1, }, }, - removedBy: { - custom() { - return SharkGame.flags.prySpongeGained > 200; + cost: [{ resource: "jellyfish", costFunction: "linear", priceIncrease: 20 }], + max: "chimaera", + prereq: { + resource: { + jellyfish: 20, }, - otherActions: ["prySponge2"], - upgrades: ["agriculture"], + upgrade: ["chimaeraReunification"], }, - }, - - prySponge2: { - name: "Pry sponge", - effect: { - resource: { - get sponge() { - return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; - }, + outcomes: [ + "A ploughnose chimaera joins you.", + "A cape elephantfish joins you.", + "An australian ghost shark joins you.", + "A whitefin chimaera joins you.", + "A bahamas ghost shark joins you.", + "A southern chimaera joins you.", + "A longspine chimaera joins you.", + "A cape chimaera joins you.", + "A shortspine chimaera joins you.", + "A leopard chimaera joins you.", + "A silver chimaera joins you.", + "A pale ghost shark joins you.", + "A spotted ratfish joins you.", + "A philippine chimaera joins you.", + "A black ghostshark joins you.", + "A blackfin ghostshark joins you.", + "A marbled ghostshark joins you.", + "A striped rabbitfish joins you.", + "A large-eyed rabbitfish joins you.", + "A spookfish joins you.", + "A dark ghostshark joins you.", + "A purple chimaera joins you.", + "A pointy-nosed blue chimaera joins you.", + "A giant black chimaera joins you.", + "A smallspine spookfish joins you.", + "A pacific longnose chimaera joins you.", + "A dwarf sicklefin chimaera joins you.", + "A sicklefin chimaera joins you.", + "A paddle-nose chimaera joins you.", + "A straightnose rabbitfish joins you.", + ], + multiOutcomes: [ + "Many chimaeras come from the deep.", + "Like ghosts, they come.", + "The chimaeras avert your gaze, but set to work quickly.", + "The jellyfish stocks shall climb ever higher!", + "Well, it saves you the effort of braving the stinging tentacles.", + "What have they seen, deep in the chasms?", + "They aren't sharks, but they feel so familiar.", + "The long-lost kindred return.", + ], + helpText: "Convince a chimaera to hunt in the darker depths for us.", + }, + + // SHARK JOBS //////////////////////////////////////////////////////////////////////////////// + + getDiver: { + name: "Prepare diver shark", + effect: { + resource: { + diver: 1, }, }, - cost: {}, + cost: [ + { resource: "shark", costFunction: "constant", priceIncrease: 1 }, + { resource: "fish", costFunction: "linear", priceIncrease: 30 }, + ], + max: "diver", prereq: { - upgrade: ["consistentCommunication"], + resource: { + shark: 3, + }, }, outcomes: [ - "Pried an orange elephant ear sponge from the rocks.", - "Pried a brain sponge from the rocks.", - "Pried a branching tube sponge from the rocks.", - "Pried a brown volcano carpet from the rocks.", - "Pried a row pore rope sponge from the rocks.", - "Pried a branching vase sponge from the rocks.", - "Pried a chicken liver sponge from the rocks.", - "Pried a red boring sponge from the rocks.", - "Pried a heavenly sponge from the rocks.", - "Pried a brown encrusting octopus sponge from the rocks.", - "Pried a stinker sponge from the rocks.", - "Pried a black-ball sponge from the rocks.", - "Pried a strawberry vase sponge from the rocks.", - "Pried a convoluted orange sponge from the rocks.", - "Pried a touch-me-not sponge from the rocks. Ow.", - "Pried a lavender rope sponge from the rocks.", - "Pried a red-orange branching sponge from the rocks.", - "Pried a variable boring sponge from the rocks.", - "Pried a loggerhead sponge from the rocks.", - "Pried a yellow sponge from the rocks.", - "Pried an orange lumpy encrusting sponge from the rocks.", - "Pried a giant barrel sponge from the rocks.", + "Well, better you than me.", + "Good luck down there!", + "You're doing good work for us, diver shark.", + "Fare well on your expeditions, shark!", ], - helpText: "Grab a sponge from the seabed for future use.", + multiOutcomes: [ + "Follow the crystals!", + "We will find the secrets of the deep!", + "Brave the deep!", + "Find the crystals for science!", + "Deep, dark, scary waters. Good luck, all of you.", + ], + helpText: "Let a shark go deep into the darkness for more crystals and whatever else they may find.", }, - // MAKE ADVANCED RESOURCES /////////////////////////////////////////////////////////////////////////////// - - toggleAutoSmelt: { - name: "Use vents to smelt porite", + getScientist: { + name: "Train science shark", effect: { - events: ["volcanicToggleSmelt"], + resource: { + scientist: 1, + }, }, - cost: {}, + cost: [ + { resource: "shark", costFunction: "constant", priceIncrease: 1 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 20 }, + ], + max: "scientist", prereq: { - upgrade: ["superSmelting"], + resource: { + crystal: 20, + shark: 1, + }, }, - outcomes: ["Toggled automatic smelting."], - helpText: "Toggle automatic smelting of porite.", - getSpecialTooltip() { - let text = `AUTOSMELT ${SharkGame.flags.autoSmelt ? "ON" : "OFF"}
    `; - if (SharkGame.flags.autoSmelt) { - const sponge = res.getResource("sponge"); - const sand = res.getResource("sand"); - const spongeCost = SharkGame.HomeActions.volcanic.smeltPorite.cost[0].priceIncrease; - const sandCost = SharkGame.HomeActions.volcanic.smeltPorite.cost[1].priceIncrease; - const maxSpongeCycles = sponge / spongeCost; - const maxSandCycles = sand / sandCost; + outcomes: [ + "Doctor Shark, coming right up!", + "A scientist shark is revealed!", + "After many painful years of study, a shark that has developed excellent skills in making excuses-- er, in science!", + "PhD approved!", + "Graduation complete!", + "A new insight drives a new shark to take up the cause of science!", + ], + multiOutcomes: [ + "The training program was a success!", + "Look at all this science!", + "Building a smarter, better shark!", + "Beakers! Beakers underwater! It's madness!", + "Let the science commence!", + "Underwater clipboards! No I don't know how that works either!", + "Careful teeth record the discoveries!", + ], + helpText: "Train a shark in the fine art of research and the science of, well, science.", + }, - text += ""; - if (maxSpongeCycles < maxSandCycles) { - text += `${sharktext.getResourceName( - "sponge", - false, - false, - sharkcolor.getElementColor("tooltipbox", "background-color"), - )}`; - } - if (maxSandCycles <= maxSpongeCycles) { - text += `${sharktext.getResourceName( - "sand", - false, - false, - sharkcolor.getElementColor("tooltipbox", "background-color"), - )}`; - } - text += ` is limiting ${sharktext.getResourceName( - "porite", - false, - false, - sharkcolor.getElementColor("tooltipbox", "background-color"), - )} production`; - } - return sharktext.boldString(text); + getNurse: { + name: "Train nurse shark", + effect: { + resource: { + nurse: 1, + }, }, + cost: [ + { resource: "shark", costFunction: "constant", priceIncrease: 1 }, + { resource: "fish", costFunction: "linear", priceIncrease: 100 }, + ], + max: "nurse", + prereq: { + resource: { + shark: 1, + }, + upgrade: ["biology"], + }, + outcomes: [ + "A nurse shark is ready!", + "Shark manufacturer primed.", + "Nurse shark trained.", + "Medical exam passed! Nurse shark is go!", + ], + multiOutcomes: [ + "More sharks are on the way soon.", + "Shark swarm begins!", + "There will be no end to the sharks!", + "Sharks forever!", + "The sharks will never end. The sharks are eternal.", + "More sharks to make more sharks to make more sharks...", + ], + helpText: "Remove a shark from fish duty and set them to shark making duty.", }, - smeltPorite: { - name: "Smelt stuff to porite", + // RAY JOBS //////////////////////////////////////////////////////////////////////////////// + + getMaker: { + name: "Instruct a ray maker", effect: { resource: { - porite: 1, + maker: 1, }, }, cost: [ - { - resource: "sponge", - costFunction: "constant", - get priceIncrease() { - return 5 - 1 * SharkGame.Aspects.syntheticTransmutation.level; - }, + { resource: "ray", costFunction: "constant", priceIncrease: 1 }, + { resource: "fish", costFunction: "linear", priceIncrease: 400 }, + ], + max: "maker", + prereq: { + resource: { + ray: 1, }, - { - resource: "sand", - costFunction: "constant", - get priceIncrease() { - return 20 - 4 * SharkGame.Aspects.syntheticTransmutation.level; - }, + upgrade: ["rayBiology"], + }, + outcomes: [ + "More rays lets you get more rays which you can then use to get more rays.", + "The ray singularity begins!", + "A ray maker is ready.", + "Looks like you gave them quite the ray maker blow! 'Them' being the intangible enemy that is lacking in resources.", + "The ray seems concerned, but obliges. The mission has been given.", + ], + multiOutcomes: [ + "All these makers. What are they making? What is it for? Oh. It's rays, and it's probably for sand or something.", + "More ray makers means more rays. Do you understand what that means?! Do you?! It means more rays. Good. On the same page, then.", + "Rapidly breeding aquatic wildlife is probably a severe ecological hazard. Good thing this isn't Earth's oceans, probably!", + "Have you ever thought about what the rays wanted? Because this might have been what they wanted after all.", + ], + helpText: "Remove a ray from sand business and let them concentrate on making more rays.", + }, + + getScholar: { + name: "Train ray scholar", + effect: { + resource: { + scholar: 1, }, + }, + cost: [ + { resource: "ray", costFunction: "constant", priceIncrease: 1 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 250 }, ], - max: "porite", + max: "scholar", prereq: { - upgrade: ["secretSmelting"], + upgrade: ["arcaneStudy"], }, outcomes: [ - "Porite smelted!", - "Porite melted! No. Wait.", - "How does sponge become part of glass? Well, you see, it's all very simple, or that's what the shrimp told me.", - "The backbo-- the exoskeleton of the shrimp industry!", - "So fragile. Yet so useful.", + "Study buddy!", + "Another scholar receives their doctorate in magical stuff.", + "The ray receives their degree.", + "The ray receives a certificate.", + "Ray, ready to learn!", + "Congratulations buddy, you've earned the right to speculate about weird fragment thingies!", ], - helpText: "Smelt resources into porite for use in shrimp tools!", + multiOutcomes: [ + "No, not ray scientists, scholars!", + "Curious minds begin to tinker and toy with the strange substance that composes arcana.", + "Just how much is there to learn about this stuff?", + "They don't do science. They do study.", + "The other side of the coin of research.", + "The scientists and the scholars rarely collaborate, so they form their own schools.", + ], + helpText: "Train a ray to study the mystical properties of arcana.", }, - // BUY ANIMALS //////////////////////////////////////////////////////////////////////////////// + // EEL JOBS //////////////////////////////////////////////////////////////////////////////// - getManta: { - prereq: { + getPit: { + name: "Dig eel pit", + effect: { resource: { - fish: 15, + pit: 1, }, }, - }, - - getCrab: { + cost: [ + { resource: "eel", costFunction: "constant", priceIncrease: 3 }, + { resource: "fish", costFunction: "linear", priceIncrease: 50 }, + { resource: "sand", costFunction: "linear", priceIncrease: 20 }, + ], + max: "pit", prereq: { resource: { - ray: 4, + eel: 1, }, + upgrade: ["eelHabitats"], }, + outcomes: [ + "Why does it take three eels? Oh well. We don't really need to know.", + "Dig that pit. We can dig it.", + "Let's get digging.", + "Oh, hey, this hole's already empty. Well, isn't that something.", + ], + multiOutcomes: [ + "Let's get digging.", + "Eel tide rises.", + "More eels! They're handy to have.", + "Many eyes from the caves.", + "Secret homes!", + "The eels are content.", + ], + helpText: "Find a suitable pit for eels to make more eels.", }, - getShrimp: { - name: "Acquire shrimp", + getSifter: { + name: "Train eel sifter", effect: { resource: { - shrimp: 1, + sifter: 1, }, }, - cost: [{ resource: "sponge", costFunction: "linear", priceIncrease: 5 }], - max: "shrimp", + cost: [ + { resource: "eel", costFunction: "constant", priceIncrease: 1 }, + { resource: "fish", costFunction: "linear", priceIncrease: 1000 }, + ], + max: "sifter", prereq: { + upgrade: ["arcaneSifting"], + }, + outcomes: [ + "Eel sifter ready to find things!", + "Eel ready to sift through the sands!", + "Time to sift, eel. Time to seek, search and sift.", + "Time for this little guy to find some goodies.", + ], + multiOutcomes: [ + "Time to find the things!", + "Sift. It's a fun word. Siiiiffft.", + "Sifters scouring the seabed for some special stuff.", + "Shifters ready to shift! Wait. No. Hang on.", + "Sifting the seabed for scores of surprises!", + ], + helpText: "Specialise an eel in finding interesting things on the seabed.", + }, + + // CHIMAERA JOBS //////////////////////////////////////////////////////////////////////////////// + + getExplorer: { + name: "Prepare chimaera explorer", + effect: { resource: { - sponge: 5, + explorer: 1, }, - upgrade: ["consistentCommunication"], + }, + cost: [ + { resource: "chimaera", costFunction: "constant", priceIncrease: 1 }, + { resource: "jellyfish", costFunction: "linear", priceIncrease: 150 }, + ], + max: "explorer", + prereq: { + upgrade: ["abyssalEnigmas"], }, outcomes: [ - "An african filter shrimp joins you.", - "An amano shrimp joins you.", - "A bamboo shrimp joins you.", - "A bee shrimp joins you.", - "A black tiger shrimp joins you.", - "A blue bee shrimp joins you.", - "A blue pearl shrimp joins you.", - "A blue tiger shrimp joins you.", - "A brown camo shrimp joins you.", - "A cardinal shrimp joins you.", - "A crystal red shrimp joins you.", - "A dark green shrimp joins you.", - "A glass shrimp joins you.", - "A golden bee shrimp joins you.", - "A harlequin shrimp joins you.", - "A malaya shrimp joins you.", - "A neocaridina heteropoda joins you.", - "A ninja shrimp joins you.", - "An orange bee shrimp joins you.", - "An orange delight shrimp joins you.", - "A purple zebra shrimp joins you.", - "A red cherry shrimp joins you.", - "A red goldflake shrimp joins you.", - "A red tiger shrimp joins you.", - "A red tupfel shrimp joins you.", - "A snowball shrimp joins you.", - "A sulawesi shrimp joins you.", - "A tiger shrimp joins you.", - "A white bee shrimp joins you.", - "A yellow shrimp joins you.", + "A seeker of mysteries is prepared.", + "The chimaera explorer is ready for their journey.", + "Explorer ready for some answers!", + "The chimaera swims down to the ocean below.", ], multiOutcomes: [ - "That's a lot of shrimp.", - "So many shrimp, it's like a cloud!", - "I can't cope with this many shrimp!", - "Shrimp, they're like bugs, except not bugs or anything related at all!", - "They're so tiny!", - "How can something so small take up so much space?", - "Sponge forever!", + "The exploration party is ready.", + "Learn the secrets of the deeps!", + "More mysteries to uncover.", + "Ancient riddles for ancient creatures.", + "Find the truth beneath the waves!", + ], + helpText: + "Help prepare a chimaera for exploration to parts unknown in search of the mysterious and elusive arcana.", + }, + + // SHARK MACHINES //////////////////////////////////////////////////////////////////////////////// + + getCrystalMiner: {}, + + getSandDigger: {}, + + getFishMachine: {}, + + getAutoTransmuter: {}, + }, + +//--------------------------------------------------- + marine: { + catchFish: {}, + + debugbutton: {}, + + getClam: { + name: "Get clam", + effect: { + resource: { + get clam() { + return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; + }, + }, + }, + cost: {}, + prereq: { + upgrade: ["clamScooping"], + }, + outcomes: [ + "Got a grooved carpet shell.", + "Got a hard clam.", + "Got a manila clam.", + "Got a soft clam.", + "Got an atlantic surf clam.", + "Got an ocean quahog.", + "Got a pacific razor clam.", + "Got a pismo clam.", + "Got a geoduck.", + "Got an atlantic jackknife clam.", + "Got a lyrate asiatic hard clam.", + "Got an ark clam.", + "Got a nut clam.", + "Got a duck clam.", + "Got a marsh clam.", + "Got a file clam.", + "Got a giant clam.", + "Got an asiatic clam.", + "Got a peppery furrow shell.", + "Got a pearl oyster.", ], - helpText: - "Convince shrimp to assist you in the gathering of algae, which increases how much sponge you can keep at once.", + helpText: "Fetch a clam. Why do we need clams now? Who knows.", }, - // RAY JOBS //////////////////////////////////////////////////////////////////////////////// + // CONVERSIONS //////////////////////////////////////////////////////////////////////////////// - getMaker: { - name: "Instruct a ray maker", + seaApplesToScience: { + name: "Study sea apples", effect: { resource: { - maker: 1, + science: 4, }, }, - cost: [ - { resource: "ray", costFunction: "constant", priceIncrease: 1 }, - { resource: "fish", costFunction: "linear", priceIncrease: 300 }, - ], - max: "maker", + cost: [{ resource: "seaApple", costFunction: "constant", priceIncrease: 1 }], + max: "seaApple", prereq: { resource: { - ray: 1, + seaApple: 1, }, - upgrade: ["rayBiology"], + upgrade: ["xenobiology"], }, outcomes: [ - "More rays lets you get more rays which you can then use to get more rays.", - "The ray singularity begins!", - "A ray maker is ready.", - "Looks like you gave them quite the ray maker blow! 'Them' being the intangible enemy that is lacking in resources.", - "The ray seems concerned, but obliges. The mission has been given.", - ], - multiOutcomes: [ - "All these makers. What are they making? What is it for? Oh. It's rays, and it's probably for sand or something.", - "More ray makers means more rays. Do you understand what that means?! Do you?! It means more rays. Good. On the same page, then.", - "Rapidly breeding aquatic wildlife is probably a severe ecological hazard. Good thing this isn't Earth's oceans, probably!", - "Have you ever thought about what the rays wanted? Because this might have been what they wanted after all.", + "There's science inside these things, surely!", + "The cause of science is advanced!", + "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...", ], - helpText: "Remove a ray from sand business and let them concentrate on making more rays.", + helpText: "Dissect the sea apples our kelp attracts to gain additional science. Research!", }, - getShoveler: { - name: "Instruct a ray shoveler", + pearlConversion: { + name: "Convert clam pearls", effect: { resource: { - shoveler: 1, + get crystal() { + if (SharkGame.Upgrades.purchased.includes("highEnergyFusion")) return 5; + return 1; + }, }, }, cost: [ - { resource: "ray", costFunction: "constant", priceIncrease: 1 }, { - resource: "porite", - costFunction: "linear", + resource: "clam", + costFunction: "constant", get priceIncrease() { - return SharkGame.Upgrades.purchased.includes("massProduction") ? 10 : 50; + if (SharkGame.Upgrades.purchased.includes("highEnergyFusion")) return 1; + return 5; }, }, ], - max: "shoveler", + max: "clam", prereq: { resource: { - ray: 1, + clam: 1, }, - upgrade: ["secretSmithing"], + upgrade: ["pearlConversion"], }, outcomes: [ - "Shoveler instructed.", - "Shoveler equipped.", - "The shoveler begins digging up sand scattered by the vents.", - "The shoveler heads for the nearest vent.", - "The shoveler straps on its gear.", - "This ray looks determined to increase productivity.", - ], - multiOutcomes: [ - "Glory to the sand.", - "It's shoveling time!", - "Dig dig dig.", - "Can you dig it?", - "The ray has a tool. It's a shovel, because it's a tool designed for shoving stuff.", - "The rays descend on the nearest vent.", - "The rays disperse and make their way to individual vents.", - "The rays begin clearing the top layer of sand around nearby vents.", + "Pearls to crystals! One day. One day, we will get this right and only use the pearl.", + "Welp, we somehow turned rocks to crystals. Oh. Nope, those were clams. Not rocks. It's so hard to tell sometimes.", + "Okay, we managed to only use the pearls this time, but we, uh, had to break the clams open pretty roughly.", + "Pearls to... nope. Clams to crystals. Science is hard.", ], - helpText: "Teach a ray to quickly move sand around using a huge, specialized scoop.", + helpText: "Convert pearls (and the clams around them) into crystal.", }, - // CRAB JOBS //////////////////////////////////////////////////////////////////////////////// + // MAKE ADVANCED RESOURCES /////////////////////////////////////////////////////////////////////////////// - /* getCatcher: { - name: "Gear up catcher crab", + transmuteSharkonium: { + name: "Transmute stuff to sharkonium", effect: { resource: { - catcher: 1, + sharkonium: 1, }, }, cost: [ - { resource: "crab", costFunction: "constant", priceIncrease: 1 }, - { resource: "sand", costFunction: "linear", priceIncrease: 100 }, - ], - max: "catcher", - prereq: { - upgrade: ["kelpCatching"], - }, - outcomes: [ - "Crab ready to catch.", - "Crab has its eyes on a piece of drifting kelp as soon as it reaches a vent.", - "This one will make a game-winning catch someday, I can just feel it.", - "Crab ready to pitch- I mean catch.", - "Equipped crab with extendo-reach.", - "This crab now reaches farther.", - ], - multiOutcomes: [ - "A bunch of claw-doodad-wielding crabs make their way to the nearest vent.", - "The extendo-grip crabs are gripping stuff.", - "The crabs test out their new equipment by messing with each other from afar. Hey, get back to work!", - "The crabs nestle into their chosen spots around the vent output.", - "Though monotonous, they seem content with this life.", - "These crabs are ready to have some fun with extendo-reach.", - "The crabs just seem happy to help.", - ], - helpText: "Grant a crab the tools and training to help them catch stuff coming from the vents.", - }, */ - - getCuriousCrab: { - name: "Recognize curious crab", - effect: { - resource: { - curiousCrab: 1, + { + resource: "crystal", + costFunction: "constant", + get priceIncrease() { + return 5 - SharkGame.Aspects.syntheticTransmutation.level; + }, + }, + { + resource: "sand", + costFunction: "constant", + get priceIncrease() { + return 15 - 3 * SharkGame.Aspects.syntheticTransmutation.level; + }, }, - }, - cost: [ - { resource: "crab", costFunction: "constant", priceIncrease: 1 }, - { resource: "coral", costFunction: "constant", priceIncrease: 10 }, ], - max: "curiousCrab", + max: "sharkonium", prereq: { - resource: { - coral: 5, - }, + upgrade: ["transmutation"], }, outcomes: [ - "This crab is itching to know things.", - "The crab starts examining random debris on the seafloor.", - "This crab is very curious.", - "I need to know. I MUST KNOW!", - "This crab will not stop until everything is learned. Everything ever.", - ], - multiOutcomes: [ - "The crabs just seem happy to help.", - "Curious ones identified.", - "Hmm...", - "They seem lost in collective thought.", - "The crabs begin talking with each other about some weird questions they came up with.", - "The crabs begin discussing some funny ideas that they had.", + "Transmutation destination!", + "Transmutation rejuvenation!", + "Transmogrification revelation!", + "Transformation libation!", + "Transfiguration nation! ...wait.", + "Sharkonium arise!", + "Arise, sharkonium!", + "More sharkonium!", + "The substance that knows no name! Except the name sharkonium!", + "The substance that knows no description! It's weird to look at.", + "The foundation of a modern shark frenzy!", ], - helpText: "Find a crab that is curious and recognize them as a curious crab.", + helpText: "Convert ordinary resources into sharkonium, building material of the future!", }, - getResearcher: { - name: "Gear up researcher", + fuseCalcinium: { + name: "Fuse stuff to calcinium", effect: { resource: { - researcher: 1, + calcinium: 1, }, }, cost: [ - { resource: "curiousCrab", costFunction: "constant", priceIncrease: 1 }, { - resource: "porite", - costFunction: "linear", + resource: "clam", + costFunction: "constant", get priceIncrease() { - return SharkGame.Upgrades.purchased.includes("massProduction") ? 5 : 25; + return 15 - 3 * SharkGame.Aspects.syntheticTransmutation.level; }, }, - ], - max: "researcher", - prereq: { - upgrade: ["secretSmithing"], - }, - outcomes: ["Ready for collaboration.", "These papers won't write themselves!"], - multiOutcomes: [ - "Do you know who ate all the donuts?", - "Why do we all have to wear these ridiculous ties?", - "This is all within theoretical limits.", - "I hope those containment parameters are still nominal.", - "No, not headcrabs. Just regular crabs.", - "Yes, this all looks nominal.", - "I am rather looking forward to this analysis, aren't you?", - "Aren't you a bit worried about that exponential cascade scenario we discussed?", - "The crabs just seem happy to help.", - ], - helpText: "Grant a curious crab enough equipment to perform actual experiments.", - }, - - getBrood: { - name: "Form crab brood", - effect: { - resource: { - brood: 1, - }, - }, - cost: [ { - resource: "crab", + resource: "crystal", costFunction: "constant", get priceIncrease() { - return SharkGame.Upgrades.purchased.includes("broodingBiology") ? 5 : 20; + return 5 - SharkGame.Aspects.syntheticTransmutation.level; }, }, - { resource: "fish", costFunction: "linear", priceIncrease: 200 }, ], - max: "brood", + max: "calcinium", prereq: { - resource: { - crab: 1, - }, - upgrade: ["crabBiology"], + upgrade: ["calciniumStudies"], }, outcomes: [ - "A bunch of crabs pile together into some sort of weird cluster.", - "Crab team, assemble! FORM THE CRAB BROOD!", - "[This message has been censored for reasons of being mostly really gross.]", - "Eggs, eggs everywhere, but never stop and think.", - "Writhing crab pile. Didn't expect those words next to each other today, did you.", - ], - multiOutcomes: [ - "The broods grow. The swarm rises.", - "All these crabs are probably a little excessive. ...is what I could say, but I'm going to say this instead. MORE CRABS.", - "A sea of crabs on the bottom of the sea. Clickity clackity.", - "Snip snap clack clack burble burble crabs crabs crabs crabs.", - "More crabs are always a good idea. Crystals aren't cheap.", - "The broods swell in number. The sharks are uneasy, but the concern soon passes.", + "Fusion complete.", + "Clams sacrificed.", + "The fresh calcinium boils the water around it as it cools.", + "The clams and crystals meld together into a single unit.", + "The structures of the clams and crystals interlock, then solidify.", + "Bits of debris shoot out, glowing with heat as two become one.", + "Onlookers watch in awe as the lightshow goes on.", + "The pearl works its magic.", + "Completed fusion.", ], - helpText: "Meld several crabs into a terrifying, incomprehensible crab-producing brood cluster.", + helpText: "Smelt resources into calcinium for use in crustacean machines.", }, - // SHRIMP JOBS //////////////////////////////////////////////////////////////////////////////// + // BUY ANIMALS //////////////////////////////////////////////////////////////////////////////// - getQueen: { - name: "Crown shrimp queen", + getShark: {}, + + getManta: {}, + + getCrab: {}, + + getLobster: { + name: "Gain lobster", effect: { resource: { - queen: 1, + lobster: 1, }, }, - cost: [ - { resource: "shrimp", costFunction: "constant", priceIncrease: 1 }, - { resource: "sponge", costFunction: "linear", priceIncrease: 250 }, - ], - max: "queen", + cost: [{ resource: "clam", costFunction: "linear", priceIncrease: 10 }], + max: "lobster", prereq: { resource: { - shrimp: 1, + clam: 10, }, - upgrade: ["eusociality"], + upgrade: ["clamScooping"], }, outcomes: [ - "Up the ranks you go, little one.", - "Shrimp queen prepped for duty!", - "A royal shrimp is she!", - "More shrimp for the shrimp superorganism!", - "Give it time before they start singing about wanting to break free.", - "Long live the tiny tiny shrimp queen!", + "A scampi joins you.", + "A crayfish joins you.", + "A clawed lobster joins you.", + "A spiny lobster joins you.", + "A slipper lobster joins you.", + "A hummer lobster joins you.", + "A crawfish joins you.", + "A rock lobster joins you.", + "A langouste joins you.", + "A shovel-nose lobster joins you.", + "A crawdad joins you.", ], multiOutcomes: [ - "Okay, so it's not exactly a royal role, but hey, they're gonna be making eggs for a long time. Humour them.", - "This is the weirdest monarchy in existence.", - "Welcome to the superorganisation!", - "They want to ride their bicycle.", - "Give it time before they start singing about wanting to break free.", - "Queens for the shrimp colony! Eggs for the egg throne!", - "Go, more shrimps!", - "Neverending shrimp cycle, GO!", + "Lobsters lobsters lobsters lobsters.", + "But they weren't rocks...", + "The clam forecast is looking good!", + "They're all about the clams!", + "More lobsters, because why not?", + "HEAVY LOBSTERS", + "More lobsters for the snipping and the cutting and the clam grab!", + "Clam patrol, here we go.", ], - helpText: "Crown a shrimp queen to make more shrimp.", + helpText: "Hire a lobster to scoop up clams for us.", }, - getFarmer: { - name: "Assign shrimp farmer", + // SHARK JOBS //////////////////////////////////////////////////////////////////////////////// + + getScientist: {}, + + getNurse: {}, + + // RAY JOBS //////////////////////////////////////////////////////////////////////////////// + + getMaker: {}, + + getClamScavenger: { + name: "Equip clam scavenger", effect: { resource: { - farmer: 1, + clamScavenger: 1, }, }, cost: [ - { resource: "shrimp", costFunction: "constant", priceIncrease: 1 }, - { - resource: "porite", - costFunction: "linear", - get priceIncrease() { - return SharkGame.Upgrades.purchased.includes("massProduction") ? 2 : 10; - }, - }, + { resource: "ray", costFunction: "constant", priceIncrease: 1 }, + { resource: "calcinium", costFunction: "linear", priceIncrease: 15 }, + { resource: "fish", costFunction: "linear", priceIncrease: 1000 }, ], - max: "farmer", + max: "clamScavenger", prereq: { resource: { - shrimp: 1, + calcinium: 1, }, - upgrade: ["secretSmithing"], + upgrade: ["calciniumRobotics"], }, outcomes: [ - "One shrimp equipped with tiny pitchfork and cute little hat.", - "Gave a shrimp the tools it needs to farm efficiently.", - "The shrimp happily takes on its new role.", - "In a way, this is a promotion.", - "One shrimp, ready to contribute even more to society than usual.", + "Scavenger ready to scavenge.", + "Claw arm operational.", + "Arm training complete.", + "One ray, able to use goofy oversized arm, coming right up.", + "A ray, ready to have a big arm do its job for it.", + "Ray equipped.", + "Ray ready to indiscriminately tear up the seabed.", ], multiOutcomes: [ - "The shrimps are excited to contribute to the sponge mass.", - "These are some pretty fluid castes.", - "Promotions for everybody!", - "Glory to the king! We honor him with our cute little pitchforks.", - "The sponge must grow.", - "The sponge is life.", - "Glory to the sponge. Glory to the shrimp mass.", + "These arms are big.", + "Scoop scoop scoop.", + "Expensive equipment equipped.", + "Directive: dig clams.", + "The faint sound of grinding stone fills the water.", + "Why a crab claw? why not a lobster? Actually, wait...is there a difference?", ], - helpText: "Dedicate a shrimp to the cultivation of plants.", + helpText: "Strap a big goofy claw arm to a ray and train it to scoop huge amounts of clams.", }, - getAcolyte: { - name: "Indoctrinate algae acolyte", + // CRAB JOBS //////////////////////////////////////////////////////////////////////////////// + + getPlanter: {}, + + getBrood: {}, + + getSeabedStripper: { + name: "Equip seabed stripper", effect: { resource: { - acolyte: 1, + seabedStripper: 1, }, }, cost: [ - { resource: "shrimp", costFunction: "constant", priceIncrease: 1 }, - { resource: "algae", costFunction: "linear", priceIncrease: 2500 }, + { resource: "calcinium", costFunction: "linear", priceIncrease: 150 }, + { resource: "planter", costFunction: "constant", priceIncrease: 1 }, ], - max: "acolyte", + max: "seabedStripper", prereq: { - upgrade: ["algaeAcolytes"], + resource: { + calcinium: 1, + }, + upgrade: ["calciniumRobotics"], }, outcomes: [ - "Acolyte indoctrinated.", - "Another one begins their journey to algae enlightenment.", - "This one has awoken their third eye, or something like that.", - "This shrimp will now do whatever activities these shrimp do and cause more algae to appear because of it.", + "Planter has been upgraded.", + "Seabed stripper, ready to destroy the forests.", + "One seabed stripper, ready to pretend to be a sea spider.", + "One snippy crab coming right up.", + "Snip.", + "The crab gestures with all its claws.", + "Promoted a planter.", + "Improved a planter.", ], multiOutcomes: [ - "Our organization grows.", - "I'm sure this cult behavior will have no negative repurcussions.", - "Algae goes up...", - "More algae. MORE.", - "This amount of algae is definitely sustainable and not going to hurt us in the long-run.", - "I want more sponge, and there's only one way I know to get it! More algae!", - "The algae must be pleased, or it will not grow.", - "Appease the greens.", + "Snip snip snip.", + "The claws rip into kelp like a synchronized dance.", + "The sound of plants ripping fills the water.", + "Directive: extract kelp from forests.", + "Many small snippers come to life and begin snipping through kelp at incredible speed.", + "The crabs join another group headed out in search of new forests.", + "Too many arms, honestly.", ], - helpText: "Indoctrinate a shrimp into the cult of algae to boost algae production.", + helpText: "Equip a planter with many additional arms for maximum efficiency.", }, - getSpongeFarm: { - name: "Construct sponge farm", + // LOBSTER JOBS //////////////////////////////////////////////////////////////////////////////// + + getBerrier: { + name: "Form lobster berrier", effect: { - events: ["volcanicBoughtFarm"], resource: { - spongeFarm: 1, + berrier: 1, }, }, cost: [ - { resource: "sponge", costFunction: "constant", priceIncrease: 1 }, - { - resource: "sand", - costFunction: "linear", - get priceIncrease() { - return SharkGame.Upgrades.purchased.includes("landReform") ? 50 : 250; - }, - }, + { resource: "lobster", costFunction: "constant", priceIncrease: 1 }, + { resource: "clam", costFunction: "linear", priceIncrease: 30 }, ], - max: "spongeFarm", + max: "berrier", prereq: { - upgrade: ["agriculture"], + resource: { + lobster: 1, + }, + upgrade: ["crustaceanBiology"], }, outcomes: [ - "Sponge farm constructed, sponge barn raised.", - "Now growing sponge in this general location.", - "Sand tilled. Sponge planted.", - "'Right here, this will be a farm!' And so it was.", + "We didn't need to see the process behind this.", + "One lobster brimming with eggs to go.", + "It's like some weird counterpart to the planter crab. But with eggs.", + "Lobster with rocks ready to make a move. Oh, okay, eggs, whatever, see, they look like shiny pebbles from a distance and... oh, forget it.", ], multiOutcomes: [ - "Do we really need to till the sand to grow sponge?", - "Grow, sponge! Grow!", - "I hope we have enough algae to support this level of production.", - "The shrimp are pleased.", - "Is anybody staffing these?", - "Farms are a-go.", - "Designated growing spots.", + "Berrier isn't even a word!", + "Berries and eggs aren't even the same thing!", + "How do these things swim with this much weighing them down?", + "We aren't running out of volunteers any time soon.", + "Did you see them fight for this job? Claws everywhere, I tell you!", ], - helpText: "Pick a spot and set up a sponge farm there.", + helpText: "Dedicate a lobster to egg production. We don't know how it works. Ask the lobsters.", }, - getCoralFarm: { - name: "Construct coral farm", + // SHARK MACHINES //////////////////////////////////////////////////////////////////////////////// + + getCrystalMiner: {}, + + getSandDigger: {}, + + getFishMachine: {}, + + getAutoTransmuter: {}, + + // CRUSTACEAN MACHINES ///////////////////////////////////////////////////////// + + getCalciniumConverter: { + name: "Assemble calcinium converter", effect: { resource: { - coralFarm: 1, + calciniumConverter: 1, }, }, cost: [ - { resource: "coral", costFunction: "constant", priceIncrease: 1 }, - { - resource: "sand", - costFunction: "linear", - get priceIncrease() { - return SharkGame.Upgrades.purchased.includes("landReform") ? 50 : 250; - }, - }, + { resource: "calcinium", costFunction: "linear", priceIncrease: 100 }, + { resource: "lobster", costFunction: "constant", priceIncrease: 1 }, ], - max: "coralFarm", + max: "calciniumConverter", prereq: { - upgrade: ["coralCloning"], + resource: { + calcinium: 1, + }, + upgrade: ["calciniumCybernetics"], }, outcomes: [ - "Coral farm constructed, coral barn raised.", - "Now growing coral in this general location.", - "Sand tilled. Coral planted.", - "'Right here, this will be a farm!' And so it was.", + "One lobster-turned-cyborg coming right up.", + "Incoming cyborg.", + "Lobster has been augmented.", + "The lobster gets to work immediately.", + "The lobster ignores your presence as it searches for materials.", + "The converter begins to convert.", + "The converter asks for materials.", ], multiOutcomes: [ - "Do we really need to till the sand to grow coral?", - "Grow, coral! Grow!", - "The crabs are pleased.", - "Is anybody staffing these?", - "Farms are a-go.", - "Designated growing spots.", + "Lasers charged.", + "Fusion beams ready.", + "Future!?", + "Directive: automate.", + "Setting phasers to fuse...", + "The power of the sun in an attached limb!", + "Focus. Focus. Come on...fuse!", + "Two becomes one.", ], - helpText: "Pick a spot and set up a coral farm there.", + helpText: "Modify a lobster to fuse calcinium with cool cyborg laser beams.", // This crustacean machine distributes lobster eggs for optimal hatching conditions. }, }, //--------------------------------------------------- - tempestuous: { + volcanic: { + // FREEBIES //////////////////////////////////////////////////////////////////////////////// + catchFish: {}, debugbutton: {}, - // CONVERSIONS //////////////////////////////////////////////////////////////////////////////// - - seagrassToScience: { - name: "Study seagrass flowers", + prySponge: { effect: { + events: ["volcanicTallyPrySponge"], resource: { - get science() { - return SharkGame.Upgrades.purchased.includes("supernaturalSeagrass") ? 10 : 1; + get sponge() { + return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; }, }, }, - cost: [{ resource: "seagrass", costFunction: "constant", priceIncrease: 2 }], - max: "seagrass", - prereq: { - resource: { - seagrass: 1, + removedBy: { + custom() { + return SharkGame.flags.prySpongeGained > 200; }, - upgrade: ["xenobiology"], + otherActions: ["prySponge2"], + upgrades: ["agriculture"], }, - outcomes: [ - "There's science inside these things, surely!", - "The cause of science is advanced!", - "This is perhaps maybe insightful!", - "Why are we even doing this? Who knows! Science!", - "Results still inconclusive! Unsurpsingly...", - "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.", - ], - - helpText: "Dissect seagrass flowers to further the cause of science. This is research, probably!", }, - // MAKE ADVANCED RESOURCES /////////////////////////////////////////////////////////////////////////////// - - transmuteSharkonium: {}, - - // BUY ANIMALS //////////////////////////////////////////////////////////////////////////////// - - getShark: {}, - - getManta: {}, - - getCrab: {}, - - getBillfish: { - name: "Fetch billfish", + prySponge2: { + name: "Pry sponge", effect: { resource: { - billfish: 1, + get sponge() { + return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; + }, }, }, - cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 10 }], - max: "billfish", + cost: {}, prereq: { - resource: { - fish: 10, - }, - upgrade: ["cavernousContact"], + upgrade: ["consistentCommunication"], }, outcomes: [ - "A swordfish joins you.", - "A sailfish joins you.", - "A black marlin joins you.", - "A blue marlin joins you.", - "A white marlin joins you.", - "A shortbill spearfish joins you.", - "A striped marlin joins you.", - "A roundscale spearfish joins you.", - "A longbill spearfish joins you.", - ], - multiOutcomes: [ - "The billfish cometh! En garde, storm!", - "You swear you heard the clink of swords from within the school you just summoned.", - "Brave the storm, friends. Brave the storm.", - "This swarm shall save the sea.", - "More! More! The fish will flow.", - "Better you all than me.", - "What are these guys so enthusiastic for?", - "A flotilla of swordfish! No, seriously.", - "A school of billfish emerges from the back of the cave.", + "Pried an orange elephant ear sponge from the rocks.", + "Pried a brain sponge from the rocks.", + "Pried a branching tube sponge from the rocks.", + "Pried a brown volcano carpet from the rocks.", + "Pried a row pore rope sponge from the rocks.", + "Pried a branching vase sponge from the rocks.", + "Pried a chicken liver sponge from the rocks.", + "Pried a red boring sponge from the rocks.", + "Pried a heavenly sponge from the rocks.", + "Pried a brown encrusting octopus sponge from the rocks.", + "Pried a stinker sponge from the rocks.", + "Pried a black-ball sponge from the rocks.", + "Pried a strawberry vase sponge from the rocks.", + "Pried a convoluted orange sponge from the rocks.", + "Pried a touch-me-not sponge from the rocks. Ow.", + "Pried a lavender rope sponge from the rocks.", + "Pried a red-orange branching sponge from the rocks.", + "Pried a variable boring sponge from the rocks.", + "Pried a loggerhead sponge from the rocks.", + "Pried a yellow sponge from the rocks.", + "Pried an orange lumpy encrusting sponge from the rocks.", + "Pried a giant barrel sponge from the rocks.", ], - helpText: "Fetch a billfish from the back of the cave and ask them to help us catch fish.", + helpText: "Grab a sponge from the seabed for future use.", }, - // SHARK JOBS //////////////////////////////////////////////////////////////////////////////// + // MAKE ADVANCED RESOURCES /////////////////////////////////////////////////////////////////////////////// - getScientist: { + toggleAutoSmelt: { + name: "Use vents to smelt porite", + effect: { + events: ["volcanicToggleSmelt"], + }, + cost: {}, prereq: { - upgrade: ["statsDiscovery"], + upgrade: ["superSmelting"], }, - }, - - getNurse: {}, - - // RAY JOBS //////////////////////////////////////////////////////////////////////////////// + outcomes: ["Toggled automatic smelting."], + helpText: "Toggle automatic smelting of porite.", + getSpecialTooltip() { + let text = `AUTOSMELT ${SharkGame.flags.autoSmelt ? "ON" : "OFF"}
    `; + if (SharkGame.flags.autoSmelt) { + const sponge = res.getResource("sponge"); + const sand = res.getResource("sand"); + const spongeCost = SharkGame.HomeActions.volcanic.smeltPorite.cost[0].priceIncrease; + const sandCost = SharkGame.HomeActions.volcanic.smeltPorite.cost[1].priceIncrease; + const maxSpongeCycles = sponge / spongeCost; + const maxSandCycles = sand / sandCost; - getLaser: { - cost: [ - { resource: "ray", costFunction: "constant", priceIncrease: 1 }, - { - resource: "crystal", - costFunction: "linear", - get priceIncrease() { - return SharkGame.Upgrades.purchased.includes("laserLenses") ? 10 : 50; - }, - }, - ], + text += ""; + if (maxSpongeCycles < maxSandCycles) { + text += `${sharktext.getResourceName( + "sponge", + false, + false, + sharkcolor.getElementColor("tooltipbox", "background-color"), + )}`; + } + if (maxSandCycles <= maxSpongeCycles) { + text += `${sharktext.getResourceName( + "sand", + false, + false, + sharkcolor.getElementColor("tooltipbox", "background-color"), + )}`; + } + text += ` is limiting ${sharktext.getResourceName( + "porite", + false, + false, + sharkcolor.getElementColor("tooltipbox", "background-color"), + )} production`; + } + return sharktext.boldString(text); + }, }, - getMaker: {}, - - // CRAB JOBS //////////////////////////////////////////////////////////////////////////////// - - getStormgoer: { - name: "Gear up crab stormgoer", + smeltPorite: { + name: "Smelt stuff to porite", effect: { resource: { - stormgoer: 1, + porite: 1, }, }, cost: [ - { resource: "crab", costFunction: "constant", priceIncrease: 1 }, - { resource: "seagrass", costFunction: "constant", priceIncrease: 10 }, + { + resource: "sponge", + costFunction: "constant", + get priceIncrease() { + return 5 - 1 * SharkGame.Aspects.syntheticTransmutation.level; + }, + }, { resource: "sand", - costFunction: "linear", + costFunction: "constant", get priceIncrease() { - return SharkGame.Upgrades.purchased.includes("heavySifting") ? 25 : 100; + return 20 - 4 * SharkGame.Aspects.syntheticTransmutation.level; }, }, ], - max: "stormgoer", + max: "porite", prereq: { - resource: { - crab: 1, - }, - upgrade: ["sandbagging"], + upgrade: ["secretSmelting"], }, outcomes: [ - "Here comes one crab ready to NOT collect crystals just because.", - "Heavy-duty crab coming right up.", - "This crustacean is ready to pick grass for a living.", - "Grass me up, stormgoer.", - "This one goes into the storm.", - "We salute you, little one.", - "Bon voyage, little one.", - ], - multiOutcomes: [ - "The crabs are reassured that yes, indeed, the sandbags are securely attached.", - "You have to wonder how they manage to carry all that around.", - "Surely, that's enough sandbags.", - "These ones go into the storm.", - "The crabs double check their sandbags, then set off into the great unknown.", - "How much sand did this cost us again?", - "Snip snip snip.", - "Snip snap snip.", + "Porite smelted!", + "Porite melted! No. Wait.", + "How does sponge become part of glass? Well, you see, it's all very simple, or that's what the shrimp told me.", + "The backbo-- the exoskeleton of the shrimp industry!", + "So fragile. Yet so useful.", ], - helpText: "Weigh down a crab with sand to keep it from being carried away in the storm.", + helpText: "Smelt resources into porite for use in shrimp tools!", }, - getBrood: {}, - - // BILLFISH JOBS //////////////////////////////////////////////////////////////////////////////// + // BUY ANIMALS //////////////////////////////////////////////////////////////////////////////// - getBillfishPair: { - name: "Match billfish pair", - effect: { + getManta: { + prereq: { resource: { - billfishPair: 1, + fish: 15, }, }, - cost: [ - { resource: "billfish", costFunction: "constant", priceIncrease: 2 }, - { resource: "fish", costFunction: "linear", priceIncrease: 250 }, - ], - max: "billfishPair", + }, + + getCrab: { prereq: { - upgrade: ["billfishBiology"], + resource: { + ray: 4, + }, }, - outcomes: [ - "Billfish paired.", - "Two of one makes one of...two...or something.", - "I pronouce you bill and fish.", - "Found a match!", - ], - multiOutcomes: [ - "Paired some billfish.", - "Two by two.", - "Finding a compatible pair is seriously harder than it looks.", - ], - helpText: "Do a bit of matchmaking and pair up two billfish to continue the circle of life.", }, - getBillfishExplorer: { - name: "Equip billfish explorer", + getShrimp: { + name: "Acquire shrimp", effect: { resource: { - billfishExplorer: 1, + shrimp: 1, }, }, - cost: [ - { resource: "billfish", costFunction: "constant", priceIncrease: 1 }, - { resource: "seagrass", costFunction: "linear", priceIncrease: 1000 }, - { resource: "crystal", costFunction: "linear", priceIncrease: 25 }, - ], - max: "billfishExplorer", + cost: [{ resource: "sponge", costFunction: "linear", priceIncrease: 5 }], + max: "shrimp", prereq: { - upgrade: ["powerfulPropulsion"], + resource: { + sponge: 5, + }, + upgrade: ["consistentCommunication"], }, outcomes: [ - "Stay safe out there.", - "The explorer gives you a determined look, then darts away.", - "This one charges right into the storm.", - "The explorer tucks some blank maps away and dashes out of the cave.", - "The billfish reviews the plan one more time, then charges head first into the current.", + "An african filter shrimp joins you.", + "An amano shrimp joins you.", + "A bamboo shrimp joins you.", + "A bee shrimp joins you.", + "A black tiger shrimp joins you.", + "A blue bee shrimp joins you.", + "A blue pearl shrimp joins you.", + "A blue tiger shrimp joins you.", + "A brown camo shrimp joins you.", + "A cardinal shrimp joins you.", + "A crystal red shrimp joins you.", + "A dark green shrimp joins you.", + "A glass shrimp joins you.", + "A golden bee shrimp joins you.", + "A harlequin shrimp joins you.", + "A malaya shrimp joins you.", + "A neocaridina heteropoda joins you.", + "A ninja shrimp joins you.", + "An orange bee shrimp joins you.", + "An orange delight shrimp joins you.", + "A purple zebra shrimp joins you.", + "A red cherry shrimp joins you.", + "A red goldflake shrimp joins you.", + "A red tiger shrimp joins you.", + "A red tupfel shrimp joins you.", + "A snowball shrimp joins you.", + "A sulawesi shrimp joins you.", + "A tiger shrimp joins you.", + "A white bee shrimp joins you.", + "A yellow shrimp joins you.", ], multiOutcomes: [ - "Fortune favors the bold.", - "The school dashes out into the open water.", - "They seem so calm about it.", - "The team grabs a big stack of blank maps and quickly swims away.", - "Seeing this many in a group...perhaps our propulsion system is a little overcomplicated.", - "The fitting process for these things are a nightmare.", - "The group valiantly swims out of the cave into the storm.", + "That's a lot of shrimp.", + "So many shrimp, it's like a cloud!", + "I can't cope with this many shrimp!", + "Shrimp, they're like bugs, except not bugs or anything related at all!", + "They're so tiny!", + "How can something so small take up so much space?", + "Sponge forever!", ], - helpText: "Rig a complex propulsion system to a billfish and train them to chart surrounding waters.", - removedBy: { - upgrades: ["cartographicCompleteness"], - }, + helpText: + "Convince shrimp to assist you in the gathering of algae, which increases how much sponge you can keep at once.", }, - getBillfishMechanic: { - name: "Instruct billfish mechanic", + // RAY JOBS //////////////////////////////////////////////////////////////////////////////// + + getMaker: { + name: "Instruct a ray maker", effect: { resource: { - billfishMechanic: 1, + maker: 1, }, }, cost: [ - { resource: "billfish", costFunction: "constant", priceIncrease: 1 }, - { resource: "crystal", costFunction: "linear", priceIncrease: 500 }, + { resource: "ray", costFunction: "constant", priceIncrease: 1 }, + { resource: "fish", costFunction: "linear", priceIncrease: 300 }, ], - max: "billfishMechanic", + max: "maker", prereq: { - upgrade: ["engineering"], + resource: { + ray: 1, + }, + upgrade: ["rayBiology"], }, outcomes: [ - "This one has read the instruction manual, and is ready to break I MEAN improve stuff.", - "Tighten this here, and that there, and then this, aaaand...you broke it.", - "Loosen this screw here, and that bolt there, aaaand...I can't tell the difference.", - "This one starts a routine maintenance check on a fish machine.", - "This one starts a routine maintenance check on a sand digger.", - "The mechanic is ready to mechan...ize. Or whatever.", - "The mechanic goes to a machine, realizes they forgot their toolbox, and rapidly swims back in the other direction.", - "New mechanic, fresh from the doc room.", + "More rays lets you get more rays which you can then use to get more rays.", + "The ray singularity begins!", + "A ray maker is ready.", + "Looks like you gave them quite the ray maker blow! 'Them' being the intangible enemy that is lacking in resources.", + "The ray seems concerned, but obliges. The mission has been given.", ], multiOutcomes: [ - "Mechanics acquired.", - "Mechanics make our operation run like a well-oiled machine. That's great and all, but what's oil?", - "They all know so many big words. Is this really necessary?", - "The mechanics swarm on a sand digger, and immeidately break it, only to then fix it better than it started.", - "The crystal toolsets for these guys are so expensive! But sharkonium would be worse, so, no complaints.", - "They prepare to tinker.", - "The mechanics begin observing machines from all angles.", - "I wonder what they're actually doing. I can't really understand any of it, personally.", - "They look like they have no idea what they're doing, but they always get results.", + "All these makers. What are they making? What is it for? Oh. It's rays, and it's probably for sand or something.", + "More ray makers means more rays. Do you understand what that means?! Do you?! It means more rays. Good. On the same page, then.", + "Rapidly breeding aquatic wildlife is probably a severe ecological hazard. Good thing this isn't Earth's oceans, probably!", + "Have you ever thought about what the rays wanted? Because this might have been what they wanted after all.", ], - helpText: "Train a billfish to operate our machines, and give it the resources needed to tinker with them.", + helpText: "Remove a ray from sand business and let them concentrate on making more rays.", }, - // SHARK MACHINES //////////////////////////////////////////////////////////////////////////////// - - getSandDigger: { + getShoveler: { + name: "Instruct a ray shoveler", + effect: { + resource: { + shoveler: 1, + }, + }, cost: [ + { resource: "ray", costFunction: "constant", priceIncrease: 1 }, { - resource: "sand", + resource: "porite", costFunction: "linear", get priceIncrease() { - return 500 - 250 * SharkGame.Aspects.amorphousAssembly.level; + return SharkGame.Upgrades.purchased.includes("massProduction") ? 10 : 50; }, }, - { resource: "sharkonium", costFunction: "linear", priceIncrease: 50 }, ], - }, - - getFishMachine: { - cost: [{ resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }], - }, - - getAutoTransmuter: {}, - - getSkimmer: { + max: "shoveler", prereq: { resource: { - junk: 1, - }, - upgrade: ["recyclerDiscovery"], - }, - }, - }, - -//--------------------------------------------------- - shore: { - - // FREEBIES ///////////////////// - catchFish: {}, - debugButton: {}, - - // PROCESSING //////////////////////////////////// - seagrasstoScience: {}, - - // MAKE ADVANCED RESOURCES /////////////////////// - transmuteSharkonium: {}, - coatHardbark: { - name: "Coat driftwood to make hardbark", - effect: { - resource: { - hardbark: 1, + ray: 1, }, - }, - cost: [ - { resource: "crystal", costFunction: "constant", priceIncrease: 5}, - { resource: "driftwood", costFunction: "constant", priceIncrease: 1}, - ], - max: "hardbark", - prereq: { - upgrade: ["hardbarkCoating"], + upgrade: ["secretSmithing"], }, outcomes: [ - "Hardbark made. Yippee.", - "It’s just wood. In crystal.", - "A simple design, much like their inventors.", - "Yes, I suppose the crystal is really hard to coat with…", - "It’s… honestly a little impressive. For a fish, of course.", - "Gah. I’ve made so many typos trying to spell hardbark.", + "Shoveler instructed.", + "Shoveler equipped.", + "The shoveler begins digging up sand scattered by the vents.", + "The shoveler heads for the nearest vent.", + "The shoveler straps on its gear.", + "This ray looks determined to increase productivity.", ], - helpText: "Coat sturdy driftwood pieces with crystal to make hardbark.", + multiOutcomes: [ + "Glory to the sand.", + "It's shoveling time!", + "Dig dig dig.", + "Can you dig it?", + "The ray has a tool. It's a shovel, because it's a tool designed for shoving stuff.", + "The rays descend on the nearest vent.", + "The rays disperse and make their way to individual vents.", + "The rays begin clearing the top layer of sand around nearby vents.", + ], + helpText: "Teach a ray to quickly move sand around using a huge, specialized scoop.", }, - // BUY ANIMALS ///////////////////////////////// - getShark: {}, //end of creature code - getManta: {}, //end of creature code - getCrab: {}, //end of creature code - getMudskipper: { - name: "Liberate mudskipper", + // CRAB JOBS //////////////////////////////////////////////////////////////////////////////// + + /* getCatcher: { + name: "Gear up catcher crab", effect: { resource: { - mudskipper: 1, + catcher: 1, }, }, cost: [ - { resource: "fish", costFunction: "linear", priceIncrease: 1 }, - ], - max: "mudskipper", + { resource: "crab", costFunction: "constant", priceIncrease: 1 }, + { resource: "sand", costFunction: "linear", priceIncrease: 100 }, + ], + max: "catcher", prereq: { - upgrade: ["mudskipperContact"], + upgrade: ["kelpCatching"], }, outcomes: [ - "An atlantic mudskipper joins you.", - "A barred mudskipper joins you.", - "A common mudskipper joins you.", - "A Pearse’s mudskipper joins you.", - "A great blue spotted mudskipper joins you.", + "Crab ready to catch.", + "Crab has its eyes on a piece of drifting kelp as soon as it reaches a vent.", + "This one will make a game-winning catch someday, I can just feel it.", + "Crab ready to pitch- I mean catch.", + "Equipped crab with extendo-reach.", + "This crab now reaches farther.", ], multiOutcomes: [ - "Yessss! More woooodddd!!", - "These will certainly be useful...", - "Heh. Look at how scared they are.", - "Do you think we’re being too hard on them?", - "We’re doing them a favour.", - "What, they think we’re gonna eat them?", + "A bunch of claw-doodad-wielding crabs make their way to the nearest vent.", + "The extendo-grip crabs are gripping stuff.", + "The crabs test out their new equipment by messing with each other from afar. Hey, get back to work!", + "The crabs nestle into their chosen spots around the vent output.", + "Though monotonous, they seem content with this life.", + "These crabs are ready to have some fun with extendo-reach.", + "The crabs just seem happy to help.", ], - helpText: "Liberate a mudskipper from its boring old life and command it to retrieve driftwood for you.", - }, //end of creature code - getCaracara: { - name: "Convince caracara", + helpText: "Grant a crab the tools and training to help them catch stuff coming from the vents.", + }, */ + + getCuriousCrab: { + name: "Recognize curious crab", effect: { resource: { - caracara: 1, + curiousCrab: 1, }, }, cost: [ - { resource: "driftwood", costFunction: "linear", priceIncrease: 5 }, - ], - max: "caracara", + { resource: "crab", costFunction: "constant", priceIncrease: 1 }, + { resource: "coral", costFunction: "constant", priceIncrease: 10 }, + ], + max: "curiousCrab", prereq: { - upgrade: ["raiderTruce"], + resource: { + coral: 5, + }, }, outcomes: [ - "A striated caracara joins you.", - "A caracara awaits your command. Haughtily.", - "The caracara flies off with a task.", - "It gives you a strange look before it leaves.", - "The caracara accidentally sheds a feather as it lifts off.", + "This crab is itching to know things.", + "The crab starts examining random debris on the seafloor.", + "This crab is very curious.", + "I need to know. I MUST KNOW!", + "This crab will not stop until everything is learned. Everything ever.", ], multiOutcomes: [ - "They await you in flocks.", - "They blot out the sun.", - "They cast a shadow upon all as they fly.", - "Their presence commands respect from all but us.", - "You know what, they're kinda like sharks when you think about it." + "The crabs just seem happy to help.", + "Curious ones identified.", + "Hmm...", + "They seem lost in collective thought.", + "The crabs begin talking with each other about some weird questions they came up with.", + "The crabs begin discussing some funny ideas that they had.", ], - helpText: "Convince a caracara from the surface to retrieve crystals.", - }, //end of creature code + helpText: "Find a crab that is curious and recognize them as a curious crab.", + }, - // CRAB JOBS ///////////////////////////////// - getStabilizer: { - name: "Provide crab stabilizer", + getResearcher: { + name: "Gear up researcher", effect: { resource: { - stabilizer: 1, + researcher: 1, }, }, cost: [ - { resource: "crab", costFunction: "linear", priceIncrease: 1 }, - { resource: "seagrass", costFunction: "linear", priceIncrease: 2 }, - { resource: "coral", costFunction: "linear", priceIncrease: 4 }, + { resource: "curiousCrab", costFunction: "constant", priceIncrease: 1 }, + { + resource: "porite", + costFunction: "linear", + get priceIncrease() { + return SharkGame.Upgrades.purchased.includes("massProduction") ? 5 : 25; + }, + }, ], - max: "stabilizer", + max: "researcher", prereq: { - resource: { - crab: 1, - coral: 4, - seagrass: 2, - }, - upgrade: ["agriculture"], + upgrade: ["secretSmithing"], }, - outcomes: [ - "/*to be written in future*/", - ], + outcomes: ["Ready for collaboration.", "These papers won't write themselves!"], multiOutcomes: [ - "/*to be written in future*/", + "Do you know who ate all the donuts?", + "Why do we all have to wear these ridiculous ties?", + "This is all within theoretical limits.", + "I hope those containment parameters are still nominal.", + "No, not headcrabs. Just regular crabs.", + "Yes, this all looks nominal.", + "I am rather looking forward to this analysis, aren't you?", + "Aren't you a bit worried about that exponential cascade scenario we discussed?", + "The crabs just seem happy to help.", ], - helpText: "Provide a crab with coral and seagrass to plant.", + helpText: "Grant a curious crab enough equipment to perform actual experiments.", }, - // MUDSKIPPER JOBS /////////////////////////// - getBurrow: { - name: "Dig mudskipper burrow", + getBrood: { + name: "Form crab brood", effect: { resource: { - burrow: 1, + brood: 1, }, }, cost: [ - { resource: "mudskipper", costFunction: "constant", priceIncrease: 3 }, - { resource: "fish", costFunction: "linear", priceIncrease: 15 }, - { resource: "sand", costFunction: "linear", priceIncrease: 12 }, + { + resource: "crab", + costFunction: "constant", + get priceIncrease() { + return SharkGame.Upgrades.purchased.includes("broodingBiology") ? 5 : 20; + }, + }, + { resource: "fish", costFunction: "linear", priceIncrease: 200 }, ], - max: "burrow", + max: "brood", prereq: { resource: { - mudskipper: 1, + crab: 1, }, - upgrade: ["mudskipperBurrowing"], + upgrade: ["crabBiology"], }, outcomes: [ - "//*to be written in future*//", - + "A bunch of crabs pile together into some sort of weird cluster.", + "Crab team, assemble! FORM THE CRAB BROOD!", + "[This message has been censored for reasons of being mostly really gross.]", + "Eggs, eggs everywhere, but never stop and think.", + "Writhing crab pile. Didn't expect those words next to each other today, did you.", ], multiOutcomes: [ - "//*to be written in future*//", + "The broods grow. The swarm rises.", + "All these crabs are probably a little excessive. ...is what I could say, but I'm going to say this instead. MORE CRABS.", + "A sea of crabs on the bottom of the sea. Clickity clackity.", + "Snip snap clack clack burble burble crabs crabs crabs crabs.", + "More crabs are always a good idea. Crystals aren't cheap.", + "The broods swell in number. The sharks are uneasy, but the concern soon passes.", ], - helpText: "Allow a mudskipper to dig a burrow to do some weird flailing or something.", - }, //end of job code - getMentor: { - name: "Train mudskipper mentor", + helpText: "Meld several crabs into a terrifying, incomprehensible crab-producing brood cluster.", + }, + + // SHRIMP JOBS //////////////////////////////////////////////////////////////////////////////// + + getQueen: { + name: "Crown shrimp queen", effect: { resource: { - mentor: 1, + queen: 1, }, }, cost: [ - { resource: "mudskipper", costFunction: "constant", priceIncrease: 1 }, - { resource: "science", costFunction: "linear", priceIncrease: 15 }, - { resource: "hardbark", costFunction: "linear", priceIncrease: 4 }, + { resource: "shrimp", costFunction: "constant", priceIncrease: 1 }, + { resource: "sponge", costFunction: "linear", priceIncrease: 250 }, ], - max: "mentor", + max: "queen", prereq: { resource: { - mudskipper: 1, + shrimp: 1, }, - upgrade: ["puppetTeaching"], + upgrade: ["eusociality"], }, outcomes: [ - "//*to be written in future*//", - + "Up the ranks you go, little one.", + "Shrimp queen prepped for duty!", + "A royal shrimp is she!", + "More shrimp for the shrimp superorganism!", + "Give it time before they start singing about wanting to break free.", + "Long live the tiny tiny shrimp queen!", ], multiOutcomes: [ - "//*to be written in future*//", + "Okay, so it's not exactly a royal role, but hey, they're gonna be making eggs for a long time. Humour them.", + "This is the weirdest monarchy in existence.", + "Welcome to the superorganisation!", + "They want to ride their bicycle.", + "Give it time before they start singing about wanting to break free.", + "Queens for the shrimp colony! Eggs for the egg throne!", + "Go, more shrimps!", + "Neverending shrimp cycle, GO!", ], - helpText: "Teach a mudskipper techniques on puppet work, so that it may pass on its knowledge.", - }, //end of job code - - // CARACARA JOBS /////////////////////////// - getRetrievalDuo: { - name: "Pair retrieval duo", + helpText: "Crown a shrimp queen to make more shrimp.", + }, + + getFarmer: { + name: "Assign shrimp farmer", effect: { resource: { - retrievalDuo: 1, + farmer: 1, }, }, cost: [ - { resource: "mudskipper", costFunction: "constant", priceIncrease: 1 }, - { resource: "caracara", costFunction: "linear", priceIncrease: 1 }, - { resource: "crystal", costFunction: "linear", priceIncrease: 5 }, + { resource: "shrimp", costFunction: "constant", priceIncrease: 1 }, + { + resource: "porite", + costFunction: "linear", + get priceIncrease() { + return SharkGame.Upgrades.purchased.includes("massProduction") ? 2 : 10; + }, + }, ], - max: "retrievalDuo", + max: "farmer", prereq: { resource: { - caracara: 1, - mudskipper: 1 + shrimp: 1, }, - upgrade: ["beyondwalkerPairing"], + upgrade: ["secretSmithing"], }, outcomes: [ - "//*to be written in future*//", - + "One shrimp equipped with tiny pitchfork and cute little hat.", + "Gave a shrimp the tools it needs to farm efficiently.", + "The shrimp happily takes on its new role.", + "In a way, this is a promotion.", + "One shrimp, ready to contribute even more to society than usual.", ], multiOutcomes: [ - "//*to be written in future*//", - ], - helpText: "Leave an armoured mudskipper on a platform for a caracara to take and search for driftwood.", - }, //end of job code - getConnoisseur: { - name: "Employ connoisseur", + "The shrimps are excited to contribute to the sponge mass.", + "These are some pretty fluid castes.", + "Promotions for everybody!", + "Glory to the king! We honor him with our cute little pitchforks.", + "The sponge must grow.", + "The sponge is life.", + "Glory to the sponge. Glory to the shrimp mass.", + ], + helpText: "Dedicate a shrimp to the cultivation of plants.", + }, + + getAcolyte: { + name: "Indoctrinate algae acolyte", effect: { resource: { - connoisseur: 1, + acolyte: 1, }, }, cost: [ - { resource: "caracara", costFunction: "constant", priceIncrease: 1 }, - { resource: "seagrass", costFunction: "linear", priceIncrease: 5 }, + { resource: "shrimp", costFunction: "constant", priceIncrease: 1 }, + { resource: "algae", costFunction: "linear", priceIncrease: 2500 }, ], - max: "connoisseur", + max: "acolyte", prereq: { - resource: { - caracara: 1, - seagrass: 5, - }, - upgrade: ["seagrassAttention"], + upgrade: ["algaeAcolytes"], }, outcomes: [ - "//*to be written in future*//", - + "Acolyte indoctrinated.", + "Another one begins their journey to algae enlightenment.", + "This one has awoken their third eye, or something like that.", + "This shrimp will now do whatever activities these shrimp do and cause more algae to appear because of it.", ], multiOutcomes: [ - "//*to be written in future*//", + "Our organization grows.", + "I'm sure this cult behavior will have no negative repurcussions.", + "Algae goes up...", + "More algae. MORE.", + "This amount of algae is definitely sustainable and not going to hurt us in the long-run.", + "I want more sponge, and there's only one way I know to get it! More algae!", + "The algae must be pleased, or it will not grow.", + "Appease the greens.", ], - helpText: "Get a caracara interested in seagrass to walk along shores laden with it.", - }, //end of job code + helpText: "Indoctrinate a shrimp into the cult of algae to boost algae production.", + }, - // MUDSKIPPER PUPPETS ////////////////////// - getCoralCollector: { - name: "Assemble coral collector", + getSpongeFarm: { + name: "Construct sponge farm", effect: { + events: ["volcanicBoughtFarm"], resource: { - coralCollector: 1, + spongeFarm: 1, }, }, cost: [ - { resource: "hardbark", costFunction: "linear", priceIncrease: 50 }, - { resource: "seagrass", costFunction: "linear", priceIncrease: 10 }, - { resource: "crab", costFunction: "linear", priceIncrease: 1 }, + { resource: "sponge", costFunction: "constant", priceIncrease: 1 }, + { + resource: "sand", + costFunction: "linear", + get priceIncrease() { + return SharkGame.Upgrades.purchased.includes("landReform") ? 50 : 250; + }, + }, ], - max: "coralCollector", + max: "spongeFarm", prereq: { - resource: { - hardbark: 50, - }, - upgrade: ["puppetAssembly"], + upgrade: ["agriculture"], }, outcomes: [ - "//*to be written in future*//", + "Sponge farm constructed, sponge barn raised.", + "Now growing sponge in this general location.", + "Sand tilled. Sponge planted.", + "'Right here, this will be a farm!' And so it was.", ], multiOutcomes: [ - "//*to be written in future*//", + "Do we really need to till the sand to grow sponge?", + "Grow, sponge! Grow!", + "I hope we have enough algae to support this level of production.", + "The shrimp are pleased.", + "Is anybody staffing these?", + "Farms are a-go.", + "Designated growing spots.", ], - helpText: "Put together a crablike puppet to harvest coral with serrated claws.", - }, //end of machine code - getShoreQueller: { - name: "Assemble shore queller", + helpText: "Pick a spot and set up a sponge farm there.", + }, + + getCoralFarm: { + name: "Construct coral farm", effect: { resource: { - shoreQueller: 1, + coralFarm: 1, }, }, cost: [ - { resource: "hardbark", costFunction: "linear", priceIncrease: 75 }, - { resource: "crystal", costFunction: "linear", priceIncrease: 50 }, - { resource: "seagrass", costFunction: "linear", priceIncrease: 15 }, - { resource: "shark", costFunction: "linear", priceIncrease: 1 }, + { resource: "coral", costFunction: "constant", priceIncrease: 1 }, + { + resource: "sand", + costFunction: "linear", + get priceIncrease() { + return SharkGame.Upgrades.purchased.includes("landReform") ? 50 : 250; + }, + }, ], - max: "shoreQueller", + max: "coralFarm", prereq: { - resource: { - hardbark: 75, - }, - upgrade: ["puppetAssembly"], - upgrade: ["laserRays"], + upgrade: ["coralCloning"], }, outcomes: [ - "//*to be written in future*//", + "Coral farm constructed, coral barn raised.", + "Now growing coral in this general location.", + "Sand tilled. Coral planted.", + "'Right here, this will be a farm!' And so it was.", ], multiOutcomes: [ - "//*to be written in future*//", + "Do we really need to till the sand to grow coral?", + "Grow, coral! Grow!", + "The crabs are pleased.", + "Is anybody staffing these?", + "Farms are a-go.", + "Designated growing spots.", ], - helpText: "Put together a wormlike puppet to plant seagrass and laser up rough sand.", - }, // end of machine code - getDriftwoodSnarer: { - name: "Assemble driftwood snarer", + helpText: "Pick a spot and set up a coral farm there.", + }, + }, + +//--------------------------------------------------- + tempestuous: { + catchFish: {}, + + debugbutton: {}, + + // CONVERSIONS //////////////////////////////////////////////////////////////////////////////// + + seagrassToScience: { + name: "Study seagrass flowers", effect: { resource: { - driftwoodSnarer: 1, + get science() { + return SharkGame.Upgrades.purchased.includes("supernaturalSeagrass") ? 10 : 1; + }, }, }, - cost: [ - { resource: "hardbark", costFunction: "linear", priceIncrease: 25 }, - { resource: "seagrass", costFunction: "linear", priceIncrease: 25 }, - { resource: "ray", costFunction: "linear", priceIncrease: 1 }, - ], - max: "driftwoodSnarer", + cost: [{ resource: "seagrass", costFunction: "constant", priceIncrease: 2 }], + max: "seagrass", prereq: { resource: { - hardbark: 25, - seagrass: 15, + seagrass: 1, }, - upgrade: ["puppetAssembly"], + upgrade: ["xenobiology"], }, outcomes: [ - "//*to be written in future*//", - ], - multiOutcomes: [ - "//*to be written in future*//", + "There's science inside these things, surely!", + "The cause of science is advanced!", + "This is perhaps maybe insightful!", + "Why are we even doing this? Who knows! Science!", + "Results still inconclusive! Unsurpsingly...", + "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.", ], - helpText: "Put together a raylike puppet to catch driftwood in a seagrass net.", - }, //end of machine code - getHardbarkSmith: { - name: "Assemble hardbark smith", + + helpText: "Dissect seagrass flowers to further the cause of science. This is research, probably!", + }, + + // MAKE ADVANCED RESOURCES /////////////////////////////////////////////////////////////////////////////// + + transmuteSharkonium: {}, + + // BUY ANIMALS //////////////////////////////////////////////////////////////////////////////// + + getShark: {}, + + getManta: {}, + + getCrab: {}, + + getBillfish: { + name: "Fetch billfish", effect: { resource: { - hardbarkSmith: 1, + billfish: 1, }, }, - cost: [ - { resource: "hardbark", costFunction: "linear", priceIncrease: 50 }, - { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, - { resource: "seagrass", costFunction: "linear", priceIncrease: 15 }, - { resource: "mudskipper", costFunction: "linear", priceIncrease: 1 }, - ], - max: "hardbarkSmith", + cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 10 }], + max: "billfish", prereq: { resource: { - hardbark: 50, - sharkonium: 25, + fish: 10, }, - upgrade: ["puppetAssembly"], + upgrade: ["cavernousContact"], }, outcomes: [ - "//*to be written in future*//", + "A swordfish joins you.", + "A sailfish joins you.", + "A black marlin joins you.", + "A blue marlin joins you.", + "A white marlin joins you.", + "A shortbill spearfish joins you.", + "A striped marlin joins you.", + "A roundscale spearfish joins you.", + "A longbill spearfish joins you.", ], multiOutcomes: [ - "//*to be written in future*//", + "The billfish cometh! En garde, storm!", + "You swear you heard the clink of swords from within the school you just summoned.", + "Brave the storm, friends. Brave the storm.", + "This swarm shall save the sea.", + "More! More! The fish will flow.", + "Better you all than me.", + "What are these guys so enthusiastic for?", + "A flotilla of swordfish! No, seriously.", + "A school of billfish emerges from the back of the cave.", ], - helpText: "Put together a clawed, orblike puppet to coat hardbark in a dish.", - }, //end of machine code + helpText: "Fetch a billfish from the back of the cave and ask them to help us catch fish.", + }, - // UNIQUE ////////////////////// - getSafeholdSentinel: { - name: "Repair Safehold Sentinel", - effect: { - resource: { - safeholdSentinel: 1, - }, - }, - cost: [ - { resource: "hardbark", costFunction: "unique", priceIncrease: 250 }, - { resource: "sharkonium", costFunction: "unique", priceIncrease: 25 }, - { resource: "crystal", costFunction: "unique", priceIncrease: 5 }, - ], - max: "safeholdSentinel", + // SHARK JOBS //////////////////////////////////////////////////////////////////////////////// + + getScientist: { prereq: { - resource: { - hardbark: 250, - sharkonium: 25, - crystal: 5, + upgrade: ["statsDiscovery"], + }, + }, + + getNurse: {}, + + // RAY JOBS //////////////////////////////////////////////////////////////////////////////// + + getLaser: { + cost: [ + { resource: "ray", costFunction: "constant", priceIncrease: 1 }, + { + resource: "crystal", + costFunction: "linear", + get priceIncrease() { + return SharkGame.Upgrades.purchased.includes("laserLenses") ? 10 : 50; + }, }, - upgrade: ["farExploration"], - }, - outcomes: [ - "//*to be written in future*//", ], - multiOutcomes: [ - "//*to be written in future*//", - ], - helpText: "Repair the multi-armed thing above the big latch.", - }, //end of unique code - getBarrageBraver: { - ame: "Reconstruct Barrage Braver", + }, + + getMaker: {}, + + // CRAB JOBS //////////////////////////////////////////////////////////////////////////////// + + getStormgoer: { + name: "Gear up crab stormgoer", effect: { resource: { - barrageBraver: 1, + stormgoer: 1, }, }, cost: [ - { resource: "hardbark", costFunction: "unique", priceIncrease: 125 }, - { resource: "sharkonium", costFunction: "unique", priceIncrease: 125 }, - { resource: "crystal", costFunction: "unique", priceIncrease: 15 }, + { resource: "crab", costFunction: "constant", priceIncrease: 1 }, + { resource: "seagrass", costFunction: "constant", priceIncrease: 10 }, + { + resource: "sand", + costFunction: "linear", + get priceIncrease() { + return SharkGame.Upgrades.purchased.includes("heavySifting") ? 25 : 100; + }, + }, ], - max: "barrageBraver", + max: "stormgoer", prereq: { resource: { - hardbark: 125, - sharkonium: 125, - crystal: 15, + crab: 1, }, - upgrade: ["taleHeeding"], + upgrade: ["sandbagging"], }, outcomes: [ - "//*to be written in future*//", + "Here comes one crab ready to NOT collect crystals just because.", + "Heavy-duty crab coming right up.", + "This crustacean is ready to pick grass for a living.", + "Grass me up, stormgoer.", + "This one goes into the storm.", + "We salute you, little one.", + "Bon voyage, little one.", ], multiOutcomes: [ - "//*to be written in future*//", + "The crabs are reassured that yes, indeed, the sandbags are securely attached.", + "You have to wonder how they manage to carry all that around.", + "Surely, that's enough sandbags.", + "These ones go into the storm.", + "The crabs double check their sandbags, then set off into the great unknown.", + "How much sand did this cost us again?", + "Snip snip snip.", + "Snip snap snip.", ], - helpText: "Reconstruct the Barrage Braver of beyondwalker legend.", - }, //end of unique code - getGatemasterPuppet: { - ame: "Scavenge Gatemaster", + helpText: "Weigh down a crab with sand to keep it from being carried away in the storm.", + }, + + getBrood: {}, + + // BILLFISH JOBS //////////////////////////////////////////////////////////////////////////////// + + getBillfishPair: { + name: "Match billfish pair", effect: { resource: { - gatemasterPuppet: 1, + billfishPair: 1, }, }, cost: [ - { resource: "hardbark", costFunction: "unique", priceIncrease: 250 }, - { resource: "sharkonium", costFunction: "unique", priceIncrease: 25 }, - { resource: "crystal", costFunction: "unique", priceIncrease: 5 }, + { resource: "billfish", costFunction: "constant", priceIncrease: 2 }, + { resource: "fish", costFunction: "linear", priceIncrease: 250 }, ], - max: "gatemasterPuppet", + max: "billfishPair", prereq: { - resource: { - hardbark: 250, - sharkonium: 25, - crystal: 5, - }, - upgrade: ["gatemasterScavenging"], + upgrade: ["billfishBiology"], }, outcomes: [ - "//*to be written in future*//", + "Billfish paired.", + "Two of one makes one of...two...or something.", + "I pronouce you bill and fish.", + "Found a match!", ], multiOutcomes: [ - "//*to be written in future*//", + "Paired some billfish.", + "Two by two.", + "Finding a compatible pair is seriously harder than it looks.", ], - helpText: "Collect the scattered pieces of... whatever this is...", - }, //end of unique code + helpText: "Do a bit of matchmaking and pair up two billfish to continue the circle of life.", + }, - // PLACES ///////////////////// - getSeagrassFarm: { - name: "Construct seagrass farm", + getBillfishExplorer: { + name: "Equip billfish explorer", effect: { resource: { - seagrassFarm: 1, + billfishExplorer: 1, }, }, cost: [ - { resource: "seagrass", costFunction: "constant", priceIncrease: 1 }, - { resource: "sand", costFunction: "linear", priceIncrease: 50 }, + { resource: "billfish", costFunction: "constant", priceIncrease: 1 }, + { resource: "seagrass", costFunction: "linear", priceIncrease: 1000 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 25 }, ], - max: "seagrassFarm", + max: "billfishExplorer", prereq: { - upgrade: ["agriculture"], + upgrade: ["powerfulPropulsion"], }, outcomes: [ - "Seagrass farm constructed, seagrass barn raised.", - "Now growing seagrass in this general location.", - "Sand tilled. Seagrass planted.", - "'Right here, this will be a farm!' And so it was.", - "Stabilizing the seabed one farm at a time!", + "Stay safe out there.", + "The explorer gives you a determined look, then darts away.", + "This one charges right into the storm.", + "The explorer tucks some blank maps away and dashes out of the cave.", + "The billfish reviews the plan one more time, then charges head first into the current.", ], multiOutcomes: [ - "Do we really need to till the sand to grow seagrass?", - "Grow, seagrass! Grow!", - "The connoisseurs are pleased.", - "Is anybody staffing these?", - "Farms are a-go.", - "Designated growing spots.", - "Imagine how much science must be in this place. + "Fortune favors the bold.", + "The school dashes out into the open water.", + "They seem so calm about it.", + "The team grabs a big stack of blank maps and quickly swims away.", + "Seeing this many in a group...perhaps our propulsion system is a little overcomplicated.", + "The fitting process for these things are a nightmare.", + "The group valiantly swims out of the cave into the storm.", ], - helpText: "Pick a spot and set up a seagrass farm there.", - }, //end of place code - getExchangeStation: { - name: "Set up exchange station", + helpText: "Rig a complex propulsion system to a billfish and train them to chart surrounding waters.", + removedBy: { + upgrades: ["cartographicCompleteness"], + }, + }, + + getBillfishMechanic: { + name: "Instruct billfish mechanic", effect: { resource: { - exchangeStation: 1, + billfishMechanic: 1, }, }, cost: [ - { resource: "driftwood", costFunction: "linear", priceIncrease: 50 }, - { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, - { resource: "coral", costFunction: "linear", priceIncrease: 15 }, + { resource: "billfish", costFunction: "constant", priceIncrease: 1 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 500 }, ], - max: "exchangeStation", + max: "billfishMechanic", prereq: { - resource: { - driftwood: 50, - sharkonium: 25, - coral: 15, - }, - upgrade: ["platformExpansion"], + upgrade: ["engineering"], }, outcomes: [ - "//*to be written in future*//", + "This one has read the instruction manual, and is ready to break I MEAN improve stuff.", + "Tighten this here, and that there, and then this, aaaand...you broke it.", + "Loosen this screw here, and that bolt there, aaaand...I can't tell the difference.", + "This one starts a routine maintenance check on a fish machine.", + "This one starts a routine maintenance check on a sand digger.", + "The mechanic is ready to mechan...ize. Or whatever.", + "The mechanic goes to a machine, realizes they forgot their toolbox, and rapidly swims back in the other direction.", + "New mechanic, fresh from the doc room.", ], multiOutcomes: [ - "//*to be written in future*//", + "Mechanics acquired.", + "Mechanics make our operation run like a well-oiled machine. That's great and all, but what's oil?", + "They all know so many big words. Is this really necessary?", + "The mechanics swarm on a sand digger, and immeidately break it, only to then fix it better than it started.", + "The crystal toolsets for these guys are so expensive! But sharkonium would be worse, so, no complaints.", + "They prepare to tinker.", + "The mechanics begin observing machines from all angles.", + "I wonder what they're actually doing. I can't really understand any of it, personally.", + "They look like they have no idea what they're doing, but they always get results.", ], - helpText: "Build an abovewater-extending station for the frenzy to use.", - }, //end of place code - getReceiverNode: { - name: "Construct receiver node", - effect: { - resource: { - receiverNode: 1, - }, - }, + helpText: "Train a billfish to operate our machines, and give it the resources needed to tinker with them.", + }, + + // SHARK MACHINES //////////////////////////////////////////////////////////////////////////////// + + getSandDigger: { cost: [ - { resource: "hardbark", costFunction: "linear", priceIncrease: 50 }, - { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, - { resource: "crystal", costFunction: "linear", priceIncrease: 5 }, - ], - max: "receiverNode", - prereq: { - resource: { - hardbark: 50, - sharkonium: 25, - crystal: 5, + { + resource: "sand", + costFunction: "linear", + get priceIncrease() { + return 500 - 250 * SharkGame.Aspects.amorphousAssembly.level; + }, }, - upgrade: ["intelTowers"], - }, - outcomes: [ - "//*to be written in future*//", - ], - multiOutcomes: [ - "//*to be written in future*//", + { resource: "sharkonium", costFunction: "linear", priceIncrease: 50 }, ], - helpText: "Build a tall spire for extra collection of intel.", - }, //end of place code - }, + }, + getFishMachine: { + cost: [{ resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }], + }, + getAutoTransmuter: {}, - + getSkimmer: { + prereq: { + resource: { + junk: 1, + }, + upgrade: ["recyclerDiscovery"], + }, + }, + }, }; SharkGame.HomeActionCategories = { From 1633453c16778dbd3af2c11988e4215628d0878d Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 16:35:32 +0400 Subject: [PATCH 088/152] -added code to hardbark stuff --- js/data/upgrades.js | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 81ebabe7..622f574d 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4640,7 +4640,6 @@ SharkGame.Upgrades = { required: { upgrades: ["driftwoodAnalysis"], }, - events: ["shoreAddMudskipper"], }, crystalBite: { required: { upgrades: ["justPushFurtherLol"] } }, crystalSpade: { required: { upgrades: ["justPushFurtherLol"] } }, @@ -4668,8 +4667,34 @@ SharkGame.Upgrades = { thermalVents: {}, laserRays: {}, agriculture: {}, //prev name: stabilization - hardbarkCoating: {}, - puppetAssembly: {}, + hardbarkCoating: { + name: "Hardbark Coating", + desc: "Apparently, our sharkonium may have been mentioned in mudskipper tale.", + researchedMessage: "Hardbark can now be made... it has a use, but the 'models' aren't 'ready'.", + effectDesc: "Hardbark coating is now possible. Their use... not yet.", + cost: { + science: 1500, + hardbark: 25, + }, + required: { + upgrades: ["driftwoodAnalysis"], + seen: ["driftwood", "crystal"] + }, + }, + puppetAssembly: { + name: "Puppet Assembly", + desc: "The mudskippers say they've refined their models.", + researchedMessage: "Mudskipper puppets can be piloted! They insist on calling them 'puppets', though...", + effectDesc: "Mudskipper puppets can be constructed and piloted.", + cost: { + science: 1500, + hardbark: 25, + }, + required: { + upgrades: ["driftwoodAnalysis", "hardbarkCoating"], + seen: ["laser"] + }, + }, fixModels: {}, puppetTeaching: {}, exploration: {}, //prev name: tunnelExpedition From 10caadbdb6137fbbae9626075fd634a4f89c4cfc Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 16:46:45 +0400 Subject: [PATCH 089/152] -added two Shore events --- js/data/events.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/js/data/events.js b/js/data/events.js index fee41d63..c6f83c12 100644 --- a/js/data/events.js +++ b/js/data/events.js @@ -542,4 +542,30 @@ SharkGame.Events = { res.buildIncomeNetwork(); }, }, + shoreGiveCoral: { + handlingTime: "beforeTick", + priority: 0, + getAction() { + return "remove"; + }, + trigger() { + if (!SharkGame.flags.gaveCoral) { + SharkGame.flags.gaveCoral = true; + res.changeResource("coral", 50); + } + }, + }, + shoreGiveSeagrass: { + handlingTime: "beforeTick", + priority: 0, + getAction() { + return "remove"; + }, + trigger() { + if (!SharkGame.flags.gaveSeagrass) { + SharkGame.flags.gaveSeagrass = true; + res.changeResource("seagrass", 50); + } + }, + }, }; From e9bf51482cc0e84c0688f66e5a46d96f8f6ce28a Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 16:47:16 +0400 Subject: [PATCH 090/152] Update upgrades.js --- js/data/upgrades.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 622f574d..a57d75f5 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4666,7 +4666,20 @@ SharkGame.Upgrades = { underwaterChemistry: {}, thermalVents: {}, laserRays: {}, - agriculture: {}, //prev name: stabilization + agriculture: { + name: "Agriculture", + desc: "Apparently, we're not supposed to be stealing sponge off the seabed. Stealing from who, exactly???", + researchedMessage: + "To the shrimps' credit, it's a lot easier to do this when we make more of them ourselves. Clumping them up and letting them grow is an efficient solution.", + effectDesc: "Sponge farms are now available.", + cost: { + sand: 5000, + }, + required: { + upgrades: ["seabedGeology"], + seen: ["sand", "roughSand"], + }, + }, //prev name: stabilization hardbarkCoating: { name: "Hardbark Coating", desc: "Apparently, our sharkonium may have been mentioned in mudskipper tale.", From 5e11632cfd9924c20c94d45bb128854bc310a310 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 17:02:08 +0400 Subject: [PATCH 091/152] -let's hope this works --- js/data/homeactions.js | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 60ad1cba..694325da 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -3103,6 +3103,37 @@ SharkGame.HomeActions = { ], helpText: "Pick a spot and set up a seagrass farm there.", }, //end of place code + getShoreCoralFarm: { + name: "Construct coral farm", + effect: { + resource: { + coralFarm: 1, + }, + }, + cost: [ + { resource: "coral", costFunction: "constant", priceIncrease: 1 }, + { resource: "sand", costFunction: "linear", priceIncrease: 50 }, + ], + max: "coralFarm", + prereq: { + upgrade: ["agriculture"], + }, + outcomes: [ + "Coral farm constructed, coral barn raised.", + "Now growing coral in this general location.", + "Sand tilled. Coral planted.", + "'Right here, this will be a farm!' And so it was.", + ], + multiOutcomes: [ + "Do we really need to till the sand to grow coral?", + "Grow, coral! Grow!", + "The stabilizers are pleased.", + "Is anybody staffing these?", + "Farms are a-go.", + "Designated growing spots.", + ], + helpText: "Pick a spot and set up a coral farm there.", + }, //end of place code getExchangeStation: { name: "Set up exchange station", effect: { @@ -5310,7 +5341,7 @@ SharkGame.HomeActionCategories = { places: { name: "Places", - actions: ["getSpongeFarm", "getCoralFarm", "getSeagrassFarm", "getExchangeStation", "getReceiverNode"], + actions: ["getSpongeFarm", "getCoralFarm", "getShoreCoralFarm", "getSeagrassFarm", "getExchangeStation", "getReceiverNode"], }, unique: { From 5c40e65a2ed3c1e104222ecb11890d3a24aa74e9 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 17:19:43 +0400 Subject: [PATCH 092/152] -added... a lot --- js/data/upgrades.js | 167 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 146 insertions(+), 21 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index a57d75f5..aa870543 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4588,6 +4588,7 @@ SharkGame.Upgrades = { resourceBoost: { roughSand: -100, }, + events: ["shoreGiveCoral", "shoreGiveSeagrass"] }, }, crabDisappearance: { @@ -4667,13 +4668,14 @@ SharkGame.Upgrades = { thermalVents: {}, laserRays: {}, agriculture: { - name: "Agriculture", - desc: "Apparently, we're not supposed to be stealing sponge off the seabed. Stealing from who, exactly???", - researchedMessage: - "To the shrimps' credit, it's a lot easier to do this when we make more of them ourselves. Clumping them up and letting them grow is an efficient solution.", - effectDesc: "Sponge farms are now available.", + name: "Stabilization", + desc: "The rays and crabs have noticed something strange about the sand around these colourful growths...", + researchedMessage: "bla bla bla don't have time rn", + effectDesc: "Seagrass farms and coral farms are now available.", cost: { sand: 5000, + seagrass: 15, + coral: 15, }, required: { upgrades: ["seabedGeology"], @@ -4708,22 +4710,145 @@ SharkGame.Upgrades = { seen: ["laser"] }, }, - fixModels: {}, - puppetTeaching: {}, - exploration: {}, //prev name: tunnelExpedition - farExploration: {}, //prev name: thingyRepairing - raiderTruce: {}, - crystalTalons: {}, - beyondwalkerPairing: {}, - platformExpansion: {}, - seagrassAttention: {}, - taleHeeding: {}, - intelTowers: {}, - firstLog: {}, - secondLog: {}, - thirdLog: {}, - gatemasterScavenging: {}, - fullStability: {}, + fixModels: { + name: "Fix Models", + desc: "They're not done???", + researchedMessage: "Well... they're 'refined'.", + effectDesc: "aabbabababa", + cost: { + hardbark: 500, + science: 15000, + }, + required: { + upgrades: ["puppetAssembly"] + }, + effect: { + incomeMultiplier: { + coralCollector: 5, + seagrassSnarer: 5, + shoreQueller: 5, + hardbarkSmith: 5, + }, + }, + }, + puppetTeaching: { + name: "Puppet Teaching", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { + mudskipper: 500, + science: 15000, + }, + required: { + upgrades: ["fixModels"], + }, + effect: { + incomeMultiplier: { + coralCollector: 5, + seagrassSnarer: 5, + shoreQueller: 5, + hardbarkSmith: 5, + }, + }, + exploration: { + name: "Tunnel Expedition", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["puppetTeaching"] }, + effect: { }, + }, //prev name: tunnelExpedition + farExploration: { + name: "Sentinel Repairing", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["exploration"] }, + effect: { }, + }, //prev name: thingyRepairing + raiderTruce: { + name: "Raider Truce", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["farExploration"] }, + effect: { }, + }, + crystalTalons: { + name: "Crystal Talons", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["raiderTruce"] }, + effect: { + incomeBoost: { + caracara: 5, + }, + }, + }, + beyondwalkerPairing: { + name: "Beyondwalker Pairing", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["crystalTalons"] }, + effect: { }, + }, + platformExpansion: { + name: "Platform Expansion", + desc: "The frenzy that gathers around the retrieval teams' platforms do rather well...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["beyondwalkerPairing"] }, + effect: { }, + }, + seagrassAttention: { + name: "Seagrass Attention", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5, seagrass: 5 }, + required: { upgrades: ["raiderTruce"] }, + effect: { }, + }, + taleHeeding: { + name: "Tale Heeding", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["platformExpansion"] }, + effect: { }, + }, + intelTowers: { + name: "Intel Towers", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["taleHeeding"] }, + effect: { }, + }, + //firstLog: {}, + //secondLog: {}, + //thirdLog: {}, + gatemasterScavenging: { + name: "Gatemaster Scavenging", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["intelTowers"] }, + effect: { }, + }, + //fullStability: {}, }, }, }; From 18e1cddf77814af191b903bf32521a767c49d177 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 17:27:10 +0400 Subject: [PATCH 093/152] -fixed a bug --- js/data/resourcetable.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index c044fb3d..14f23e91 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1829,6 +1829,10 @@ SharkGame.InternalCategories = { name: "Caracaras", resources: ["caracara", "retrievalDuo", "connoisseur"], }, + starfishes: { + name: "Starfish", + resources: ["starfish"], + }, sharkmachines: { name: "Shark Machines", resources: ["sharkonium", "fishMachine", "sandDigger", "crystalMiner", "skimmer", "autoTransmuter"], From a5d6c0fb7fab304d0305b6562fda1c0e968565bf Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 20:17:12 +0400 Subject: [PATCH 094/152] =?UTF-8?q?-added=20Brian=E2=80=99s=20getMudskippe?= =?UTF-8?q?r=20sprite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- img/small/actions/getMudskipper.js.zip | Bin 0 -> 2164 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/small/actions/getMudskipper.js.zip diff --git a/img/small/actions/getMudskipper.js.zip b/img/small/actions/getMudskipper.js.zip new file mode 100644 index 0000000000000000000000000000000000000000..770baa4d9913e1e5088513dbdc270e3c9e98105b GIT binary patch literal 2164 zcmWIWW@h1H00EH@ifG85lsA8z@$iT2WG3l&V*dm);rR=g!L|1yalF>ERLt zr1gQ=kb@0Kdj0<34x|{1gWR1M)}51i3FNq>MtG+A`Z8z%*&Gav?U@WLASFO71;h*t z%nKM9n1M7SNNfQUTvmSpGn{P*QfS`tUW9>xrO?yGF(iZa>I}nd5l4~Z&zq(@8FH$; zEb2Yz#wI~jcizbz`|FNu)Qdecb&-68qgLoK*1o%^J}jKFlkbDZ2Z=z%SBDSe z&VLp%G5KU=!xXzK$gDi8a(yBHno|xcQyy}!!_|miGvyHlTu}=3pU>Fy3QAuCJ zF|Bd&^P5pSgMUu8jO{T9@02a=9gOGdb5dpR%_1w z*cnw<_pE2pH*k!Nja9uGwpukbzOCf%IYI5Id9%+R@Ab0Oes)&>>_iJMe<{`!CaeA0Vc}XWt~}+J%~Ny5 zE!iD^l&|jp6X{;ZB0#a$gR_^r*U|jVnUu31zpk9~ojro%s_JJ33HQJ+E3@^!u2SV# zfB48En}1DDUcX+y_DUY-vGeIKCw?hRNS>mw$8^n$g~^GxDg~Fv^JVPo-M2M<>AYRf zosY3hVt;!+bsnF(-vzzw!`m}&uRNihYU08DN^ZKHf0T!7eBYC^y0_*xU3Yo9t2H2A za%F6?-%W-mYbSHcCmX)5$oXJ%e9@QR`42VR{!9MkzMVQZbj62gJ5V9y>FVdQ&MBcO z0HwVA(zS8DOA<>`Q-IQG zi8;lo2#J!S%-meCL`hL8l6Y}JQD#YMaDHh~a%ym9RVq*?)GHv@fE{NHHw7p_iQ|fK z*#h#QDM}cCJZNfw#e)TzW%(so9BH6uis4K>Q@8;TMlFbfgqBinYDpr(9Hqp90w7N* zqokz3N?$*%C^c0V7~8r9iOJc(cudaERe~C?RF+y)oSB~oQf;7Tre_Y9$jnVl2Zf&! zESZ2}AEqlUzbH2mJgd@fb9mDMo=CI@MZ-y4;Yw$uoy_cW(V;AR>J~t literal 0 HcmV?d00001 From 2f15c86d22f4be74af970adbb154f0f489998ce1 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 24 Jan 2026 20:24:20 +0400 Subject: [PATCH 095/152] -deleted the failed thingy --- img/small/actions/getMudskipper.js.zip | Bin 2164 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 img/small/actions/getMudskipper.js.zip diff --git a/img/small/actions/getMudskipper.js.zip b/img/small/actions/getMudskipper.js.zip deleted file mode 100644 index 770baa4d9913e1e5088513dbdc270e3c9e98105b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2164 zcmWIWW@h1H00EH@ifG85lsA8z@$iT2WG3l&V*dm);rR=g!L|1yalF>ERLt zr1gQ=kb@0Kdj0<34x|{1gWR1M)}51i3FNq>MtG+A`Z8z%*&Gav?U@WLASFO71;h*t z%nKM9n1M7SNNfQUTvmSpGn{P*QfS`tUW9>xrO?yGF(iZa>I}nd5l4~Z&zq(@8FH$; zEb2Yz#wI~jcizbz`|FNu)Qdecb&-68qgLoK*1o%^J}jKFlkbDZ2Z=z%SBDSe z&VLp%G5KU=!xXzK$gDi8a(yBHno|xcQyy}!!_|miGvyHlTu}=3pU>Fy3QAuCJ zF|Bd&^P5pSgMUu8jO{T9@02a=9gOGdb5dpR%_1w z*cnw<_pE2pH*k!Nja9uGwpukbzOCf%IYI5Id9%+R@Ab0Oes)&>>_iJMe<{`!CaeA0Vc}XWt~}+J%~Ny5 zE!iD^l&|jp6X{;ZB0#a$gR_^r*U|jVnUu31zpk9~ojro%s_JJ33HQJ+E3@^!u2SV# zfB48En}1DDUcX+y_DUY-vGeIKCw?hRNS>mw$8^n$g~^GxDg~Fv^JVPo-M2M<>AYRf zosY3hVt;!+bsnF(-vzzw!`m}&uRNihYU08DN^ZKHf0T!7eBYC^y0_*xU3Yo9t2H2A za%F6?-%W-mYbSHcCmX)5$oXJ%e9@QR`42VR{!9MkzMVQZbj62gJ5V9y>FVdQ&MBcO z0HwVA(zS8DOA<>`Q-IQG zi8;lo2#J!S%-meCL`hL8l6Y}JQD#YMaDHh~a%ym9RVq*?)GHv@fE{NHHw7p_iQ|fK z*#h#QDM}cCJZNfw#e)TzW%(so9BH6uis4K>Q@8;TMlFbfgqBinYDpr(9Hqp90w7N* zqokz3N?$*%C^c0V7~8r9iOJc(cudaERe~C?RF+y)oSB~oQf;7Tre_Y9$jnVl2Zf&! zESZ2}AEqlUzbH2mJgd@fb9mDMo=CI@MZ-y4;Yw$uoy_cW(V;AR>J~t From 61e96494dd603af20c5135f89d18c538f62f1c5f Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 14:40:01 +0400 Subject: [PATCH 096/152] -fixed singular bug --- js/data/worldtypes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index aa655e06..98d91ec8 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -386,7 +386,7 @@ SharkGame.WorldTypes = { "sharkmachines", "mudskipperpuppets", "coralFarm", - "seagrassFarm" + "seagrassFarm", "exchangeStation", "receiverNode", ], From ba195e8fc8efca22fc51bacaf626845b17740504 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 15:47:12 +0400 Subject: [PATCH 097/152] -added puns to titlebar --- js/titlebar.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/js/titlebar.js b/js/titlebar.js index fd096bb5..32cabc06 100644 --- a/js/titlebar.js +++ b/js/titlebar.js @@ -54,6 +54,14 @@ SharkGame.TitleBar = { }, }, + punsLink: { + name: "pun", + main: false, + onClick() { + SharkGame.Puns.showPun(); + }, + }, + changelogLink: { name: "changelog", main: false, From 0d324de4a3039eb388ffdb883ce8649cd9f36079 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 15:50:39 +0400 Subject: [PATCH 098/152] -added Shore resources to this part --- js/util.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/util.js b/js/util.js index 35e56756..fedb8587 100644 --- a/js/util.js +++ b/js/util.js @@ -141,6 +141,9 @@ SharkGame.TextUtil = { "arcana", "calcinium", "seagrass", + "driftwood", + "hardbark", + "roughSand", ].includes(name) ) { return ""; @@ -172,6 +175,9 @@ SharkGame.TextUtil = { "kelp", "calcinium", "seagrass", + "driftwood", + "hardbark", + "roughSand", ].includes(name) || amount === 1 ) { From ee414a1cee36bb5a3e61d890fb4f53f39697600a Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 16:38:03 +0400 Subject: [PATCH 099/152] -fixed singular bug --- js/tabs/cheatdevice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/tabs/cheatdevice.js b/js/tabs/cheatdevice.js index 9fcffbbb..522baccd 100644 --- a/js/tabs/cheatdevice.js +++ b/js/tabs/cheatdevice.js @@ -790,7 +790,7 @@ SharkGame.CheatsAndDebug = { delete SharkGame.HomeActions.generated[world.worldType].getCollector; delete SharkGame.HomeActions.generated[world.worldType].getExtractionTeam; delete SharkGame.HomeActions.generated[world.worldType].getStormgoer; - delete SharkGame.HomeActions.generated[world.worldType].getStabilizer + delete SharkGame.HomeActions.generated[world.worldType].getStabilizer; } SharkGame.TabHandler.setUpTab(); return "Rolled a fourteen. What are you talking about? Crabs aren't real. There were never crabs to begin with."; From 76fa1880ddb159d0815a30c90c15a0ae1508761f Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 16:42:48 +0400 Subject: [PATCH 100/152] -fixed singular bug --- js/data/homeactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 694325da..10a6b09c 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -3099,7 +3099,7 @@ SharkGame.HomeActions = { "Is anybody staffing these?", "Farms are a-go.", "Designated growing spots.", - "Imagine how much science must be in this place. + "Imagine how much science must be in this place.", ], helpText: "Pick a spot and set up a seagrass farm there.", }, //end of place code From 63b36fdc2d73b0adb049ebcfdf5eda4fffa5f5b0 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 17:50:11 +0400 Subject: [PATCH 101/152] -fixed note bug --- js/facts.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/facts.js b/js/facts.js index 091146cc..74b316d0 100644 --- a/js/facts.js +++ b/js/facts.js @@ -1,5 +1,5 @@ SharkGame.FunFacts = { - dilutedResources: ["shark", "ray", "crab", "fish"], // dilute these while not in starter to keep the fun facts fresher + dilutedResources: ["shark", "ray", "crab", "fish"], //dilute these while not in starter to keep the fun facts fresher showFact() { log.addMessage(this.getFact()); From 33e1bc3e411fff07fc647a2f4c697a1411726e96 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 17:51:29 +0400 Subject: [PATCH 102/152] -fixed singular bug --- js/facts.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/facts.js b/js/facts.js index 74b316d0..8575ed85 100644 --- a/js/facts.js +++ b/js/facts.js @@ -1,5 +1,5 @@ SharkGame.FunFacts = { - dilutedResources: ["shark", "ray", "crab", "fish"], //dilute these while not in starter to keep the fun facts fresher + dilutedResources: ["shark", "ray", "crab", "fish"], // dilute these while not in starter to keep the fun facts fresher showFact() { log.addMessage(this.getFact()); @@ -288,7 +288,7 @@ SharkGame.FunFacts = { "According to Norse mythology, the first two humans were made out of driftwood. Whatever Norse is. And humans.", "The frenzy never burns driftwood as fuel, as the combustion releases toxic and long-lasting substances into the air.", "Driftwood is often used by several animals, both aquatic and terrestrial, as shelter and food.", - "In the beyond, driftwood can be found in abundance as simple 'wood', but only driftwood has the right composition for hardbark.", //according to the caracaras. + "In the beyond, driftwood can be found in abundance as simple 'wood', but only driftwood has the right composition for hardbark.", // according to the caracaras. ], ancientPart: [ "What do they do? We still aren't sure.", From 7e20c0f78c5e76faad067085f3b4c389368327a8 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 17:52:43 +0400 Subject: [PATCH 103/152] -fixed comment bug --- js/gateway.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/gateway.js b/js/gateway.js index e53e20b3..a6efe57f 100644 --- a/js/gateway.js +++ b/js/gateway.js @@ -1253,7 +1253,7 @@ SharkGame.Gateway.Messages = { "How quickly do you travel through worlds?", "You are becoming familiar with this.", "Back so soon?", - "Welcome back, to the space between spaces.", //THE WORLD BETWEEN WORLDS FROM STAR WARS NO WAY --ThreeEels + "Welcome back, to the space between spaces.", // THE WORLD BETWEEN WORLDS FROM STAR WARS NO WAY --ThreeEels ], }, { From a7518becf84fff1791117b12dc65deac3b204714 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 17:53:29 +0400 Subject: [PATCH 104/152] -fixed comment bugs --- js/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/main.js b/js/main.js index c339d183..c470ffa0 100644 --- a/js/main.js +++ b/js/main.js @@ -106,13 +106,13 @@ $.extend(SharkGame, { "Hollow Shark: Shark Song", "Last Shark Standing", "Sharkjago: Masters of Sharkjitsu", - "Shark: Galactic Ad-shark-tures", //this was a bad spin on 'Spore: Galactic Adventures' --ThreeEels + "Shark: Galactic Ad-shark-tures", // this was a bad spin on 'Spore: Galactic Adventures' --ThreeEels ], GAME_NAME: null, ACTUAL_GAME_NAME: "Shark Game", VERSION: "20250127a", ORIGINAL_VERSION: 0.71, - VERSION_NAME: "The Shore Update", //Put "The Chaotic Shore Update" if both oceans come out at around the same time - ThreeEels + VERSION_NAME: "The Shore Update", // Put "The Chaotic Shore Update" if both oceans come out at around the same time - ThreeEels EPSILON: 1e-6, // floating point comparison is a joy BIGGEST_SAFE_NUMBER: 1000000000000, MAX: 1e300, From cf32a7a38c6020a584389f11199e73be35fafb0e Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 18:03:45 +0400 Subject: [PATCH 105/152] -fixed indentation error --- js/data/events.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/events.js b/js/data/events.js index c6f83c12..3b55cb6a 100644 --- a/js/data/events.js +++ b/js/data/events.js @@ -556,7 +556,7 @@ SharkGame.Events = { }, }, shoreGiveSeagrass: { - handlingTime: "beforeTick", + handlingTime: "beforeTick", priority: 0, getAction() { return "remove"; From beedd8084c603b97d23239aac33449eea42e5bef Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 18:09:55 +0400 Subject: [PATCH 106/152] -fixed trailing spaces + comma bugs --- js/data/homemessages.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/js/data/homemessages.js b/js/data/homemessages.js index 0b5ff16e..cb6b4fa1 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -14,7 +14,6 @@ SharkGame.HomeMessages = { }, { name: "start-sharks", - unlock: { resource: { shark: 2 } }, message: "More sharks swim over, curious and watchful.", }, @@ -530,7 +529,7 @@ SharkGame.HomeMessages = { { name: "shore-sandstorm-escape-attempt", unlock: { upgrade: ["fleeBarrage"] }, - message: "The sandstorm has stretched out endlessly. No matter how far you backtrack, it is there." + message: "The sandstorm has stretched out endlessly. No matter how far you backtrack, it is there.", }, { name: "shore-sandstorm-escape-attempt-the-sequel", @@ -549,8 +548,7 @@ SharkGame.HomeMessages = { }, ], - /* - stone: [ + /* stone: [ { message: "The jagged seafloor looks ancient, yet pristine.
    Sponges thrive in great numbers on the rocks.", From 7860665c225c4320d1f305d6961788ab77bc259c Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 18:12:55 +0400 Subject: [PATCH 107/152] -fixed indentation bugs --- js/data/modifiertypes.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/data/modifiertypes.js b/js/data/modifiertypes.js index f9067c4c..567bbe13 100644 --- a/js/data/modifiertypes.js +++ b/js/data/modifiertypes.js @@ -382,8 +382,8 @@ SharkGame.ModifierTypes = { // this applies to base income so it should never be reapplied return input; }, - }, - addDriftwoodIncome: { + }, + addDriftwoodIncome: { defaultValue: 0, apply(current, degree, resource) { if (!SharkGame.ResourceMap.get(resource).baseIncome) { From b3ea09cde606a2279c9ea3bf1901227efa197b29 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 20:26:35 +0400 Subject: [PATCH 108/152] -fixed token bug --- js/data/worldtypes.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 98d91ec8..048009ed 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -392,8 +392,8 @@ SharkGame.WorldTypes = { ], absentResources: ["kelp", "seaApple"], modifiers: [ - { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1 } - { type: "multiplier", modifier: "planetaryResourceBoost", resource: "sand", amount: 2.5 } + { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1 }, + { type: "multiplier", modifier: "planetaryResourceBoost", resource: "sand", amount: 2.5 }, { type: "multiplier", modifier: "planetaryIncome", resource: "roughSand", amount: 1 }, ], gateType: "slots", From 59778f74001c4d3cf11459e6c06166d5691239f3 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 25 Jan 2026 20:33:11 +0400 Subject: [PATCH 109/152] -fixed some bugs (I hope) --- js/puns.js | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/js/puns.js b/js/puns.js index b58ad5fa..6cd5fbf0 100644 --- a/js/puns.js +++ b/js/puns.js @@ -1,5 +1,5 @@ -//this puns.js is a wip. it runs on the facts.js code so there's most likely going to be bugs. --ThreeEels -//suggested by base4 (spencers145) in 2021, initiated by ThreeEels in Jan 2026. +// this puns.js is a wip. it runs on the facts.js code so there's most likely going to be bugs. --ThreeEels +// suggested by base4 (spencers145) in 2021, initiated by ThreeEels in Jan 2026. SharkGame.Puns = { dilutedResources: ["shark", "ray", "crab", "fish"], // dilute these while not in starter to keep the bad puns fresher @@ -20,8 +20,8 @@ SharkGame.Puns = { this.worldBased[currentWorld] && (!this.worldBased[currentWorld].areRequirementsMet || this.worldBased[currentWorld].areRequirementsMet()) ) { - _.each(this.worldBased[currentWorld].messages, (fact) => { - pool.push(sharktext.boldString("Pun: ") + `${fact}`); + _.each(this.worldBased[currentWorld].messages, (pun) => { + pool.push(sharktext.boldString("Pun: ") + `${pun}`); }); } @@ -32,7 +32,7 @@ SharkGame.Puns = { if (world.doesResourceExist(resource) && res.getTotalResource(resource)) { anyAvailableResource = true; if (!this.dilutedResources.includes(resource) || currentWorld === "start" || Math.random() < 0.25) { - _.each(facts, (fact) => { + _.each(puns, (pun) => { pool.push( sharktext.boldString( `${sharktext.getResourceName( @@ -57,7 +57,7 @@ SharkGame.Puns = { // // also acts as a failsafe in case there are no other facts to display if (Math.random() < 0.1 || pool.length === 0) { - _.each(this.default, (fact) => { + _.each(this.default, (pun) => { pool.push(sharktext.boldString("Pun: ") + `${pun}`); }); } @@ -104,34 +104,34 @@ SharkGame.Puns = { "After one of your sharks ate a clownfish, do you know what he said?
    'This tastes like it’s depressed and tired of constantly being seen as a joke!'", ], crystal: [ - "Placeholder :D" + "Placeholder :D", ], sand: [ - "Placeholder :D" + "Placeholder :D", ], kelp: [ - "Placeholder :D" + "Placeholder :D", ], driftwood: [ - "Placeholder :D" + "Placeholder :D", ], seagrass: [ - "Placeholder :D" + "Placeholder :D", ], coral: [ - "Placeholder :D" + "Placeholder :D", ], sponge: [ - "Placeholder :D" + "Placeholder :D", ], tar: [ - "Placeholder :D" + "Placeholder :D", ], ice: [ - "Placeholder :D" + "Placeholder :D", ], roughSand: [ - "Placeholder :D" + "Placeholder :D", ], shark: [ "Placeholder :D", @@ -171,13 +171,13 @@ SharkGame.Puns = { "Placeholder :D", ], billfish: [ - "Placeholder :D" + "Placeholder :D", ], mudskipper: [ - "Placeholder :D" + "Placeholder :D", ], caracara: [ - "Placeholder :D" + "Placeholder :D", ], }, From 55c02e7b25c39e7fa2936f80996c05341f5020af Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 26 Jan 2026 17:47:18 +0400 Subject: [PATCH 110/152] -fixed singular bug --- js/data/homeactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 10a6b09c..13eb87cc 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -5216,7 +5216,7 @@ SharkGame.HomeActionCategories = { "getOctopus", "getSquid", "getUrchin", - "getBillfish" + "getBillfish", "getMudskipper", "getCaracara", ], From fd135e48c2523eb8dc3f455a6e3749ed245f49d2 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 26 Jan 2026 17:49:04 +0400 Subject: [PATCH 111/152] -fixed some bugs (I hope) --- js/data/homemessages.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/js/data/homemessages.js b/js/data/homemessages.js index cb6b4fa1..b72a6195 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -547,12 +547,11 @@ SharkGame.HomeMessages = { message: "These tiny fish aren't very remarkable - but what they (skittishly) bring back is another matter.", }, ], - /* stone: [ { message: "The jagged seafloor looks ancient, yet pristine.
    Sponges thrive in great numbers on the rocks.", }, - ],*/ + ], */ }, }; From 8a27a2c206aad8712546beff2dd3f1a2953844dc Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 26 Jan 2026 17:57:09 +0400 Subject: [PATCH 112/152] -fixed bugs + added stuff --- js/data/resourcetable.js | 75 +++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 14f23e91..00d6e32f 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -3,7 +3,7 @@ SharkGame.ResourceTable = { // SAVED FOR LATER - coralglass: { //machine-making material; archived from original game -- ThreeEels + coralglass: { // machine-making material; archived from original game -- ThreeEels name: "coralglass", singleName: "coralglass", desc: "null", @@ -11,14 +11,14 @@ SharkGame.ResourceTable = { value: 70, }, - starfish: { //frenzy member; courtesy of my great irl friend -- ThreeEels + starfish: { // frenzy member; courtesy of my great irl friend -- ThreeEels name: "starfish", singleName: "starfish", desc: "Obliviously cute - as long as you don't see their mouths.", color: "#C2754A", - value: 3000 + value: 3000, }, - + // SPECIAL numen: { @@ -779,7 +779,7 @@ SharkGame.ResourceTable = { // SHORE - stabilizer: { //my inner british english speaker is screaming blue murder --ThreeEels + stabilizer: { // my inner british english speaker is screaming blue murder --ThreeEels name: "stabilizer crabs", singleName: "stabilizer crab", color: "#339966", @@ -789,7 +789,7 @@ SharkGame.ResourceTable = { seagrass: 0.5, }, }, - + mudskipper: { name: "mudskippers", singleName: "mudskipper", @@ -874,7 +874,7 @@ SharkGame.ResourceTable = { desc: "Crablike puppets that saw at the coral with serrated claws.", color: "#99004D", income: { - coral: 3 + coral: 3, }, }, @@ -884,7 +884,7 @@ SharkGame.ResourceTable = { desc: "Drifting, raylike puppets collecting driftwood in their seagrass nets.", color: "#333300", income: { - driftwood: 2 + driftwood: 2, }, }, @@ -895,7 +895,7 @@ SharkGame.ResourceTable = { color: "#00004D", income: { hardbark: 2, - crystal: -2 + crystal: -2, }, }, @@ -911,7 +911,7 @@ SharkGame.ResourceTable = { }, safeholdSentinel: { - name: "Safehold Sentinel", //it's special. that's why it has caps. --ThreeEels + name: "Safehold Sentinel", // it's special. that's why it has caps. --ThreeEels singleName: "Safehold Sentinel", desc: "The warden of many arms.", color: "#FFFFFF", @@ -919,14 +919,14 @@ SharkGame.ResourceTable = { roughSand: -5.5, }, }, - + barrageBraver: { name: "Barrage Braver", singleName: "Barrage Braver", desc: "The courageous one.", color: "#FFFFFF", income: { - intel: 0.0001 + intel: 0.001, }, }, @@ -963,14 +963,14 @@ SharkGame.ResourceTable = { intel: 1.5, }, }, - + roughSand: { name: "rough sand", singleName: "rough sand", desc: "Jagged grains that dig into our flesh.", color: "#CC9900", }, - + // SHROUDED chimaera: { @@ -1437,27 +1437,32 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { fishMachine: 0.01, }, }, - mentor: { - multiply: { - coralCollector: 0.05, - hardbarkSmith: 0.05, - driftwoodSnarer: 0.05, - shoreQueller: 0.05, - }, - }, - gatemasterPuppet: { - multiply: { - coralCollector: 15, - hardbarkSmith: 15, - driftwoodSnarer: 15, - shoreQueller: 15, - }, - }, - exchangeStation: { - multiply: { - placeholder: 0.75, - }, - }, + mentor: { + multiply: { + coralCollector: 0.05, + hardbarkSmith: 0.05, + driftwoodSnarer: 0.05, + shoreQueller: 0.05, + }, + }, + gatemasterPuppet: { + multiply: { + coralCollector: 15, + hardbarkSmith: 15, + driftwoodSnarer: 15, + shoreQueller: 15, + }, + }, + exchangeStation: { + multiply: { + mudskipper: 0.75, + caracara: 0.75, + shark: 0.75, + ray: 0.75, + crab: 0.75, + retrievalDuo: 1.75, + }, + }, // cool tooltip test crab /* crab: { exponentiate: { From b378c34b0331332f373de14e2a55ca8f6409c148 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 26 Jan 2026 18:07:54 +0400 Subject: [PATCH 113/152] -tried to fix indentation (hope it works) --- js/data/worldtypes.js | 100 +++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 048009ed..644b47ab 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -355,56 +355,56 @@ SharkGame.WorldTypes = { sharkonium: 1, }, }, - shore: { //please note this worldtype code is very much WIP// - name: "Shore", - vagueDesc: "Feels shallow.", - desc: "A shallow, lapping beachfront.", - shortDesc: "small sandy", - foresight: { - vagueLongDesc: "This place is so shallow.", - longDesc: "A lapping, sandy ocean, creeping upon the shores.", - missing: ["kelp", "seaApple", "planter"], - present: ["mudskipper", "driftwood", "hardbark", "coral", "seagrass", "caracara"], - tip: "Not all is as it seems. Respect the brown fish that survive the beyond.", - }, - entry: "You enter a low-strung sandy sea, just over tall enough for you to fit. It's clear water on all sides, except for behind you...", - style: "shore", - includedResources: [ - "basics", - "coral", - "driftwood", - "intel", - "seagrass", - "sharks", - "rays", - "crab", - "brood", - "stabilizer", - "mudskippers", - "caracaras", - "basicmaterials", - "sharkmachines", - "mudskipperpuppets", - "coralFarm", - "seagrassFarm", - "exchangeStation", - "receiverNode", - ], - absentResources: ["kelp", "seaApple"], - modifiers: [ - { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1 }, - { type: "multiplier", modifier: "planetaryResourceBoost", resource: "sand", amount: 2.5 }, - { type: "multiplier", modifier: "planetaryIncome", resource: "roughSand", amount: 1 }, - ], - gateType: "slots", - gateCosts: { - fish: 1e5, - crystal: 2e5, - driftwood: 5e3, - coral: 3e5, - seagrass: 2e5, - hardbark: 2e5, - gatemasterPuppet: 1, + shore: { // please note this worldtype code is very much WIP + name: "Shore", + vagueDesc: "Feels shallow.", + desc: "A shallow, lapping beachfront.", + shortDesc: "small sandy", + foresight: { + vagueLongDesc: "This place is so shallow.", + longDesc: "A lapping, sandy ocean, creeping upon the shores.", + missing: ["kelp", "seaApple", "planter"], + present: ["mudskipper", "driftwood", "hardbark", "coral", "seagrass", "caracara"], + tip: "Not all is as it seems. Respect the brown fish that survive the beyond.", + }, + entry: "You enter a low-strung sandy sea, just over tall enough for you to fit. It's clear water on all sides, except for behind you...", + style: "shore", + includedResources: [ + "basics", + "coral", + "driftwood", + "intel", + "seagrass", + "sharks", + "rays", + "crab", + "brood", + "stabilizer", + "mudskippers", + "caracaras", + "basicmaterials", + "sharkmachines", + "mudskipperpuppets", + "coralFarm", + "seagrassFarm", + "exchangeStation", + "receiverNode", + ], + absentResources: ["kelp", "seaApple"], + modifiers: [ + { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "crab", amount: 1 }, + { type: "multiplier", modifier: "planetaryResourceBoost", resource: "sand", amount: 2.5 }, + { type: "multiplier", modifier: "planetaryIncome", resource: "roughSand", amount: 1 }, + ], + gateType: "slots", + gateCosts: { + fish: 1e5, + crystal: 2e5, + driftwood: 5e3, + coral: 3e5, + seagrass: 2e5, + hardbark: 2e5, + gatemasterPuppet: 1, }, }, stone: { From cb68cf986107cc4de424b8a367d1365afff99234 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 26 Jan 2026 18:36:06 +0400 Subject: [PATCH 114/152] -fixed indentation (I hope) --- js/data/upgrades.js | 260 ++++++++++++++++++++++---------------------- 1 file changed, 130 insertions(+), 130 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index aa870543..65304327 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4528,7 +4528,7 @@ SharkGame.Upgrades = { }, }, shore: { - template: { + template: { name: "Upgrade Template", desc: "This is the text in the lab button thingy...", researchedMessage: "...and this is the text that goes next to the buttons!", @@ -4536,8 +4536,8 @@ SharkGame.Upgrades = { cost: { }, required: { }, effect: { }, - }, - murkAssessment: { + }, + murkAssessment: { name: "Murk Assessment", desc: "What is that sandy cloud? What does it do? We should go inside it.", researchedMessage: "It's a sandstorm. The one where the rough grains of sand come from. To say it's torture is an understatement.", @@ -4588,7 +4588,7 @@ SharkGame.Upgrades = { resourceBoost: { roughSand: -100, }, - events: ["shoreGiveCoral", "shoreGiveSeagrass"] + events: ["shoreGiveCoral", "shoreGiveSeagrass"], }, }, crabDisappearance: { @@ -4608,8 +4608,8 @@ SharkGame.Upgrades = { effect: { incomeMultiplier: { crab: 2, - }, }, + }, }, driftwoodAnalysis: { name: "Driftwood Analysis", @@ -4658,10 +4658,10 @@ SharkGame.Upgrades = { }, effect: { incomeMultiplier: { - mudskipper: 5, + mudskipper: 5, }, }, - }, //gosh that's a lot of crystals eh --ThreeEels + }, // gosh that's a lot of crystals eh --ThreeEels crystalContainer: { required: { upgrades: ["justPushFurtherLol"] } }, seabedGeology: {}, underwaterChemistry: {}, @@ -4681,7 +4681,7 @@ SharkGame.Upgrades = { upgrades: ["seabedGeology"], seen: ["sand", "roughSand"], }, - }, //prev name: stabilization + }, // prev name: stabilization hardbarkCoating: { name: "Hardbark Coating", desc: "Apparently, our sharkonium may have been mentioned in mudskipper tale.", @@ -4693,7 +4693,7 @@ SharkGame.Upgrades = { }, required: { upgrades: ["driftwoodAnalysis"], - seen: ["driftwood", "crystal"] + seen: ["driftwood", "crystal"], }, }, puppetAssembly: { @@ -4707,7 +4707,7 @@ SharkGame.Upgrades = { }, required: { upgrades: ["driftwoodAnalysis", "hardbarkCoating"], - seen: ["laser"] + seen: ["laser"], }, }, fixModels: { @@ -4720,7 +4720,7 @@ SharkGame.Upgrades = { science: 15000, }, required: { - upgrades: ["puppetAssembly"] + upgrades: ["puppetAssembly"], }, effect: { incomeMultiplier: { @@ -4731,124 +4731,124 @@ SharkGame.Upgrades = { }, }, }, - puppetTeaching: { - name: "Puppet Teaching", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { - mudskipper: 500, - science: 15000, - }, - required: { - upgrades: ["fixModels"], - }, - effect: { - incomeMultiplier: { - coralCollector: 5, - seagrassSnarer: 5, - shoreQueller: 5, - hardbarkSmith: 5, - }, - }, - exploration: { - name: "Tunnel Expedition", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["puppetTeaching"] }, - effect: { }, - }, //prev name: tunnelExpedition - farExploration: { - name: "Sentinel Repairing", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["exploration"] }, - effect: { }, - }, //prev name: thingyRepairing - raiderTruce: { - name: "Raider Truce", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["farExploration"] }, - effect: { }, - }, - crystalTalons: { - name: "Crystal Talons", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["raiderTruce"] }, - effect: { - incomeBoost: { - caracara: 5, - }, - }, - }, - beyondwalkerPairing: { - name: "Beyondwalker Pairing", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["crystalTalons"] }, - effect: { }, - }, - platformExpansion: { - name: "Platform Expansion", - desc: "The frenzy that gathers around the retrieval teams' platforms do rather well...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["beyondwalkerPairing"] }, - effect: { }, - }, - seagrassAttention: { - name: "Seagrass Attention", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5, seagrass: 5 }, - required: { upgrades: ["raiderTruce"] }, - effect: { }, - }, - taleHeeding: { - name: "Tale Heeding", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["platformExpansion"] }, - effect: { }, - }, - intelTowers: { - name: "Intel Towers", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["taleHeeding"] }, - effect: { }, - }, - //firstLog: {}, - //secondLog: {}, - //thirdLog: {}, - gatemasterScavenging: { - name: "Gatemaster Scavenging", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["intelTowers"] }, - effect: { }, - }, - //fullStability: {}, - }, + puppetTeaching: { + name: "Puppet Teaching", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { + mudskipper: 500, + science: 15000, + }, + required: { + upgrades: ["fixModels"], + }, + effect: { + incomeMultiplier: { + coralCollector: 5, + seagrassSnarer: 5, + shoreQueller: 5, + hardbarkSmith: 5, + }, + }, + }, + exploration: { + name: "Tunnel Expedition", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["puppetTeaching"] }, + effect: { }, + }, // prev name: tunnelExpedition + farExploration: { + name: "Sentinel Repairing", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["exploration"] }, + effect: { }, + }, // prev name: thingyRepairing + raiderTruce: { + name: "Raider Truce", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["farExploration"] }, + effect: { }, + }, + crystalTalons: { + name: "Crystal Talons", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["raiderTruce"] }, + effect: { + incomeBoost: { + caracara: 5, + }, + }, + }, + beyondwalkerPairing: { + name: "Beyondwalker Pairing", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["crystalTalons"] }, + effect: { }, + }, + platformExpansion: { + name: "Platform Expansion", + desc: "The frenzy that gathers around the retrieval teams' platforms do rather well...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["beyondwalkerPairing"] }, + effect: { }, + }, + seagrassAttention: { + name: "Seagrass Attention", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5, seagrass: 5 }, + required: { upgrades: ["raiderTruce"] }, + effect: { }, + }, + taleHeeding: { + name: "Tale Heeding", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["platformExpansion"] }, + effect: { }, + }, + intelTowers: { + name: "Intel Towers", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["taleHeeding"] }, + effect: { }, + }, + // firstLog: {}, + // secondLog: {}, + // thirdLog: {}, + gatemasterScavenging: { + name: "Gatemaster Scavenging", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["intelTowers"] }, + effect: { }, + }, + // fullStability: {}, }, }; From ec75f594fe734a943f69c3408cc62206688e3a40 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 26 Jan 2026 20:52:46 +0400 Subject: [PATCH 115/152] -first part of relocation --- css/style.css | 8 -------- 1 file changed, 8 deletions(-) diff --git a/css/style.css b/css/style.css index 4940c1b1..913e1a0b 100644 --- a/css/style.css +++ b/css/style.css @@ -67,14 +67,6 @@ --color-dark: #053247; --color-darker: #001d2b; --color-title: rgba(29, 83, 114, 0.2); -} - :root :not(.no-theme).shore { - --color-lighter: #ffdf80; /*potential other shade: #284d00*/ - --color-light: #ffd24d; - --color-med: #ffbf00; - --color-dark: #cc9900; - --color-darker: #997300; - --color-title: rgba(255, 238, 52, 0.2); } :root :not(.no-theme).shrouded { --color-lighter: #22bec3; From b8eaebd80483faa22500aebc3978cd8a1d168611 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Mon, 26 Jan 2026 20:59:48 +0400 Subject: [PATCH 116/152] -second/final part of relocation --- styles/style.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/styles/style.scss b/styles/style.scss index be31c583..6352df94 100644 --- a/styles/style.scss +++ b/styles/style.scss @@ -237,6 +237,14 @@ $sidebar-width: 25%; --color-darker: #{$color-darker-haven}; --color-title: #{rgba(color.channel($color-med-haven, 'red', $space: rgb), color.channel($color-med-haven, 'green', $space: rgb), color.channel($color-med-haven, 'blue', $space: rgb), 0.2)}; } + &.shore { + --color-lighter: #{$color-lighter-shore}; + --color-light: #{$color-light-shore}; + --color-med: #{$color-med-shore}; + --color-dark: #{$color-dark-shore}; + --color-darker: #{$color-darker-shore}; + --color-title: #{rgba(color.channel($color-med-shore, 'red', $space: rgb), color.channel($color-med-shore, 'green', $space: rgb), color.channel($color-med-shore, 'blue', $space: rgb), 0.2)}; + } &.shrouded { --color-lighter: #{$color-lighter-shrouded}; --color-light: #{$color-light-shrouded}; From 557aaca309fde14487d60cba4494944566ca644d Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Wed, 28 Jan 2026 10:29:07 +0400 Subject: [PATCH 117/152] -added last hex codes to shore resources MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s dooooone!— --- js/data/resourcetable.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 00d6e32f..6d183832 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -914,7 +914,7 @@ SharkGame.ResourceTable = { name: "Safehold Sentinel", // it's special. that's why it has caps. --ThreeEels singleName: "Safehold Sentinel", desc: "The warden of many arms.", - color: "#FFFFFF", + color: "#664D80", income: { roughSand: -5.5, }, @@ -924,7 +924,7 @@ SharkGame.ResourceTable = { name: "Barrage Braver", singleName: "Barrage Braver", desc: "The courageous one.", - color: "#FFFFFF", + color: "#773E22", income: { intel: 0.001, }, @@ -934,14 +934,14 @@ SharkGame.ResourceTable = { name: "Gatemaster", singleName: "Gatemaster", desc: "It oversees its children and its home.", - color: "#FFFFFF", + color: "#99FFCC", }, seagrassFarm: { name: "seagrass farms", singleName: "seagrass farm", desc: "Flowing crops of many blades.", - color: "#FFFFFF", + color: "#00661A", income: { seagrass: 1.5, }, @@ -951,14 +951,14 @@ SharkGame.ResourceTable = { name: "exchange stations", singleName: "exchange station", desc: "A bustling hub of beyonderwalkers and seaborn.", - color: "#FFFFFF", + color: "#4D2600", }, receiverNode: { name: "receiver nodes", singleName: "receiver node", desc: "Spires to catch the intel.", - color: "#FFFFFF", + color: "#73568F", income: { intel: 1.5, }, From 4488ce329a190601e334bac7fb98fd54b96fc884 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Wed, 28 Jan 2026 19:05:14 +0400 Subject: [PATCH 118/152] -fixed singular bug --- js/data/resourcetable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 6d183832..e79a11f0 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1444,7 +1444,7 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { driftwoodSnarer: 0.05, shoreQueller: 0.05, }, - }, + }, gatemasterPuppet: { multiply: { coralCollector: 15, From 58734b036df614e8dfedd0947820b8e8b77f8ad3 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Wed, 28 Jan 2026 19:09:26 +0400 Subject: [PATCH 119/152] -fixed singular bug --- 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 13eb87cc..d69bb98d 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -2747,7 +2747,7 @@ SharkGame.HomeActions = { ], helpText: "Provide a crab with coral and seagrass to plant.", }, - + // MUDSKIPPER JOBS /////////////////////////// getBurrow: { name: "Dig mudskipper burrow", @@ -5273,7 +5273,7 @@ SharkGame.HomeActionCategories = { "getPit", "getCollective", "getSpawner", - "getBillfishPair" + "getBillfishPair", "getBurrow", ], }, From ed658f2c09929124fb1c0a78a26d293cf48e5979 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Wed, 28 Jan 2026 19:10:20 +0400 Subject: [PATCH 120/152] -fixed singular bug --- js/data/worldtypes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 644b47ab..084a6e64 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -356,7 +356,7 @@ SharkGame.WorldTypes = { }, }, shore: { // please note this worldtype code is very much WIP - name: "Shore", + name: "Shore", vagueDesc: "Feels shallow.", desc: "A shallow, lapping beachfront.", shortDesc: "small sandy", From 49219a4ed8a0d4b34b10025dcfcce1a1d0364f2a Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Wed, 28 Jan 2026 19:20:44 +0400 Subject: [PATCH 121/152] -fixed starfish bug they're just irrelevant now lol --- js/data/resourcetable.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index e79a11f0..035fce01 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -11,13 +11,13 @@ SharkGame.ResourceTable = { value: 70, }, - starfish: { // frenzy member; courtesy of my great irl friend -- ThreeEels + /* starfish: { // frenzy member; courtesy of my great irl friend -- ThreeEels name: "starfish", singleName: "starfish", desc: "Obliviously cute - as long as you don't see their mouths.", color: "#C2754A", value: 3000, - }, + }, */ // SPECIAL @@ -1834,10 +1834,10 @@ SharkGame.InternalCategories = { name: "Caracaras", resources: ["caracara", "retrievalDuo", "connoisseur"], }, - starfishes: { + /* starfishes: { name: "Starfish", resources: ["starfish"], - }, + }, */ sharkmachines: { name: "Shark Machines", resources: ["sharkonium", "fishMachine", "sandDigger", "crystalMiner", "skimmer", "autoTransmuter"], From 3c31bedf16b0342087906ce5628a5dff4672a3c7 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Wed, 28 Jan 2026 19:30:45 +0400 Subject: [PATCH 122/152] -fixed some stuff. --- js/data/upgrades.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 65304327..4f7490e7 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4829,25 +4829,25 @@ SharkGame.Upgrades = { effect: { }, }, intelTowers: { - name: "Intel Towers", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["taleHeeding"] }, - effect: { }, + name: "Intel Towers", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["taleHeeding"] }, + effect: { }, }, // firstLog: {}, // secondLog: {}, // thirdLog: {}, gatemasterScavenging: { - name: "Gatemaster Scavenging", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["intelTowers"] }, - effect: { }, + name: "Gatemaster Scavenging", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["intelTowers"] }, + effect: { }, }, // fullStability: {}, }, From e220779c496d61f900786a51d13a4ed459a05a93 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Wed, 28 Jan 2026 20:00:40 +0400 Subject: [PATCH 123/152] -fixed indentation (I hope) --- js/data/upgrades.js | 210 ++++++++++++++++++++++---------------------- 1 file changed, 105 insertions(+), 105 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 4f7490e7..918d54b1 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4537,7 +4537,7 @@ SharkGame.Upgrades = { required: { }, effect: { }, }, - murkAssessment: { + murkAssessment: { name: "Murk Assessment", desc: "What is that sandy cloud? What does it do? We should go inside it.", researchedMessage: "It's a sandstorm. The one where the rough grains of sand come from. To say it's torture is an understatement.", @@ -4731,104 +4731,104 @@ SharkGame.Upgrades = { }, }, }, - puppetTeaching: { - name: "Puppet Teaching", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { - mudskipper: 500, - science: 15000, - }, - required: { - upgrades: ["fixModels"], - }, - effect: { - incomeMultiplier: { - coralCollector: 5, - seagrassSnarer: 5, - shoreQueller: 5, - hardbarkSmith: 5, - }, - }, - }, - exploration: { - name: "Tunnel Expedition", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["puppetTeaching"] }, - effect: { }, + puppetTeaching: { + name: "Puppet Teaching", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { + mudskipper: 500, + science: 15000, + }, + required: { + upgrades: ["fixModels"], + }, + effect: { + incomeMultiplier: { + coralCollector: 5, + seagrassSnarer: 5, + shoreQueller: 5, + hardbarkSmith: 5, + }, + }, + }, + exploration: { + name: "Tunnel Expedition", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["puppetTeaching"] }, + effect: { }, }, // prev name: tunnelExpedition - farExploration: { - name: "Sentinel Repairing", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["exploration"] }, - effect: { }, - }, // prev name: thingyRepairing - raiderTruce: { - name: "Raider Truce", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["farExploration"] }, - effect: { }, - }, - crystalTalons: { - name: "Crystal Talons", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["raiderTruce"] }, - effect: { - incomeBoost: { - caracara: 5, - }, - }, - }, - beyondwalkerPairing: { - name: "Beyondwalker Pairing", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["crystalTalons"] }, - effect: { }, - }, - platformExpansion: { - name: "Platform Expansion", - desc: "The frenzy that gathers around the retrieval teams' platforms do rather well...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["beyondwalkerPairing"] }, - effect: { }, - }, - seagrassAttention: { - name: "Seagrass Attention", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5, seagrass: 5 }, - required: { upgrades: ["raiderTruce"] }, - effect: { }, - }, - taleHeeding: { - name: "Tale Heeding", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", - cost: { fish: 5 }, - required: { upgrades: ["platformExpansion"] }, - effect: { }, - }, - intelTowers: { + farExploration: { + name: "Sentinel Repairing", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["exploration"] }, + effect: { }, + }, // prev name: thingyRepairing + raiderTruce: { + name: "Raider Truce", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["farExploration"] }, + effect: { }, + }, + crystalTalons: { + name: "Crystal Talons", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["raiderTruce"] }, + effect: { + incomeBoost: { + caracara: 5, + }, + }, + }, + beyondwalkerPairing: { + name: "Beyondwalker Pairing", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["crystalTalons"] }, + effect: { }, + }, + platformExpansion: { + name: "Platform Expansion", + desc: "The frenzy that gathers around the retrieval teams' platforms do rather well...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["beyondwalkerPairing"] }, + effect: { }, + }, + seagrassAttention: { + name: "Seagrass Attention", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5, seagrass: 5 }, + required: { upgrades: ["raiderTruce"] }, + effect: { }, + }, + taleHeeding: { + name: "Tale Heeding", + desc: "This is the text in the lab button thingy...", + researchedMessage: "...and this is the text that goes next to the buttons!", + effectDesc: "This one, however, appears in the log.", + cost: { fish: 5 }, + required: { upgrades: ["platformExpansion"] }, + effect: { }, + }, + intelTowers: { name: "Intel Towers", desc: "This is the text in the lab button thingy...", researchedMessage: "...and this is the text that goes next to the buttons!", @@ -4836,11 +4836,11 @@ SharkGame.Upgrades = { cost: { fish: 5 }, required: { upgrades: ["taleHeeding"] }, effect: { }, - }, - // firstLog: {}, - // secondLog: {}, - // thirdLog: {}, - gatemasterScavenging: { + }, + // firstLog: {}, + // secondLog: {}, + // thirdLog: {}, + gatemasterScavenging: { name: "Gatemaster Scavenging", desc: "This is the text in the lab button thingy...", researchedMessage: "...and this is the text that goes next to the buttons!", @@ -4848,7 +4848,7 @@ SharkGame.Upgrades = { cost: { fish: 5 }, required: { upgrades: ["intelTowers"] }, effect: { }, - }, - // fullStability: {}, + }, + // fullStability: {}, }, }; From e7c8a0e98ce2039703233125ae93c0363e6ecc9e Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 07:30:03 +0400 Subject: [PATCH 124/152] -fixed singular bug --- js/data/homeactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index d69bb98d..4afc122c 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -5297,7 +5297,7 @@ SharkGame.HomeActionCategories = { "fuseCalcinium", "toggleAutoSmelt", "smeltPorite", - "seagrassToScience" + "seagrassToScience", "coatHardbark", ], }, From 3593f53a0998183dc83653d7f6f1c25a9f9fd1d0 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 07:34:31 +0400 Subject: [PATCH 125/152] -fixed two indentation bugs --- js/data/upgrades.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 918d54b1..f6409054 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4536,7 +4536,7 @@ SharkGame.Upgrades = { cost: { }, required: { }, effect: { }, - }, + }, murkAssessment: { name: "Murk Assessment", desc: "What is that sandy cloud? What does it do? We should go inside it.", @@ -4760,7 +4760,7 @@ SharkGame.Upgrades = { cost: { fish: 5 }, required: { upgrades: ["puppetTeaching"] }, effect: { }, - }, // prev name: tunnelExpedition + }, // prev name: tunnelExpedition farExploration: { name: "Sentinel Repairing", desc: "This is the text in the lab button thingy...", From 0ee67399f5b0d133cc91aee9ddd3aeec23d51161 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 07:43:36 +0400 Subject: [PATCH 126/152] -fixed some comment bugs --- js/data/homeactions.js | 49 +++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 4afc122c..e9b361ee 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -1397,7 +1397,7 @@ SharkGame.HomeActions = { */ }, -//--------------------------------------------------- + // --------------------------------------------------- abandoned: { catchFish: {}, @@ -1869,7 +1869,7 @@ SharkGame.HomeActions = { }, }, -//--------------------------------------------------- + // --------------------------------------------------- haven: { catchFish: {}, @@ -2335,7 +2335,7 @@ SharkGame.HomeActions = { }, }, -//--------------------------------------------------- + // --------------------------------------------------- frigid: { catchFish: {}, @@ -2611,12 +2611,11 @@ SharkGame.HomeActions = { }, }, }, - - -//--------------------------------------------------- + + // --------------------------------------------------- shore: { - // FREEBIES ///////////////////// + // FREEBIES ////////////////////////////////////// catchFish: {}, debugButton: {}, @@ -2633,8 +2632,8 @@ SharkGame.HomeActions = { }, }, cost: [ - { resource: "crystal", costFunction: "constant", priceIncrease: 5}, - { resource: "driftwood", costFunction: "constant", priceIncrease: 1}, + { resource: "crystal", costFunction: "constant", priceIncrease: 5 }, + { resource: "driftwood", costFunction: "constant", priceIncrease: 1 }, ], max: "hardbark", prereq: { @@ -2652,9 +2651,9 @@ SharkGame.HomeActions = { }, // BUY ANIMALS ///////////////////////////////// - getShark: {}, //end of creature code - getManta: {}, //end of creature code - getCrab: {}, //end of creature code + getShark: {}, // end of creature code + getManta: {}, // end of creature code + getCrab: {}, // end of creature code getMudskipper: { name: "Liberate mudskipper", effect: { @@ -2685,7 +2684,7 @@ SharkGame.HomeActions = { "What, they think we’re gonna eat them?", ], helpText: "Liberate a mudskipper from its boring old life and command it to retrieve driftwood for you.", - }, //end of creature code + }, // end of creature code getCaracara: { name: "Convince caracara", effect: { @@ -2715,7 +2714,7 @@ SharkGame.HomeActions = { "You know what, they're kinda like sharks when you think about it." ], helpText: "Convince a caracara from the surface to retrieve crystals.", - }, //end of creature code + }, // end of creature code // CRAB JOBS ///////////////////////////////// getStabilizer: { @@ -2804,7 +2803,7 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Teach a mudskipper techniques on puppet work, so that it may pass on its knowledge.", - }, //end of job code + }, // end of job code // CARACARA JOBS /////////////////////////// getRetrievalDuo: { @@ -2863,7 +2862,7 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Get a caracara interested in seagrass to walk along shores laden with it.", - }, //end of job code + }, // end of job code // MUDSKIPPER PUPPETS ////////////////////// getCoralCollector: { @@ -2892,7 +2891,7 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Put together a crablike puppet to harvest coral with serrated claws.", - }, //end of machine code + }, // end of machine code getShoreQueller: { name: "Assemble shore queller", effect: { @@ -2978,7 +2977,7 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Put together a clawed, orblike puppet to coat hardbark in a dish.", - }, //end of machine code + }, // end of machine code // UNIQUE ////////////////////// getSafeholdSentinel: { @@ -3009,7 +3008,7 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Repair the multi-armed thing above the big latch.", - }, //end of unique code + }, // end of unique code getBarrageBraver: { ame: "Reconstruct Barrage Braver", effect: { @@ -3038,7 +3037,7 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Reconstruct the Barrage Braver of beyondwalker legend.", - }, //end of unique code + }, // end of unique code getGatemasterPuppet: { ame: "Scavenge Gatemaster", effect: { @@ -3067,7 +3066,7 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Collect the scattered pieces of... whatever this is...", - }, //end of unique code + }, // end of unique code // PLACES ///////////////////// getSeagrassFarm: { @@ -3133,7 +3132,7 @@ SharkGame.HomeActions = { "Designated growing spots.", ], helpText: "Pick a spot and set up a coral farm there.", - }, //end of place code + }, // end of place code getExchangeStation: { name: "Set up exchange station", effect: { @@ -3162,7 +3161,7 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Build an abovewater-extending station for the frenzy to use.", - }, //end of place code + }, // end of place code getReceiverNode: { name: "Construct receiver node", effect: { @@ -3191,11 +3190,11 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Build a tall spire for extra collection of intel.", - }, //end of place code + }, // end of place code }, -//--------------------------------------------------- + // --------------------------------------------------- shrouded: { catchFish: {}, From 3aa9ba5828e36d78ea2cd6d271190b77da7e1aac Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 07:52:31 +0400 Subject: [PATCH 127/152] -fixed some bugs i hope --- js/data/homeactions.js | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index e9b361ee..ac0ad91e 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -2611,18 +2611,18 @@ SharkGame.HomeActions = { }, }, }, - + // --------------------------------------------------- shore: { - - // FREEBIES ////////////////////////////////////// + + // FREEBIES ////////////////////////////////////// catchFish: {}, debugButton: {}, - // PROCESSING //////////////////////////////////// + // PROCESSING //////////////////////////////////// seagrasstoScience: {}, - // MAKE ADVANCED RESOURCES /////////////////////// + // MAKE ADVANCED RESOURCES /////////////////////// transmuteSharkonium: {}, coatHardbark: { name: "Coat driftwood to make hardbark", @@ -2650,7 +2650,7 @@ SharkGame.HomeActions = { helpText: "Coat sturdy driftwood pieces with crystal to make hardbark.", }, - // BUY ANIMALS ///////////////////////////////// + // BUY ANIMALS ///////////////////////////////// getShark: {}, // end of creature code getManta: {}, // end of creature code getCrab: {}, // end of creature code @@ -2663,7 +2663,7 @@ SharkGame.HomeActions = { }, cost: [ { resource: "fish", costFunction: "linear", priceIncrease: 1 }, - ], + ], max: "mudskipper", prereq: { upgrade: ["mudskipperContact"], @@ -2694,7 +2694,7 @@ SharkGame.HomeActions = { }, cost: [ { resource: "driftwood", costFunction: "linear", priceIncrease: 5 }, - ], + ], max: "caracara", prereq: { upgrade: ["raiderTruce"], @@ -2711,7 +2711,7 @@ SharkGame.HomeActions = { "They blot out the sun.", "They cast a shadow upon all as they fly.", "Their presence commands respect from all but us.", - "You know what, they're kinda like sharks when you think about it." + "You know what, they're kinda like sharks when you think about it.", ], helpText: "Convince a caracara from the surface to retrieve crystals.", }, // end of creature code @@ -2746,7 +2746,7 @@ SharkGame.HomeActions = { ], helpText: "Provide a crab with coral and seagrass to plant.", }, - + // MUDSKIPPER JOBS /////////////////////////// getBurrow: { name: "Dig mudskipper burrow", @@ -2769,13 +2769,12 @@ SharkGame.HomeActions = { }, outcomes: [ "//*to be written in future*//", - ], multiOutcomes: [ "//*to be written in future*//", ], helpText: "Allow a mudskipper to dig a burrow to do some weird flailing or something.", - }, //end of job code + }, // end of job code getMentor: { name: "Train mudskipper mentor", effect: { @@ -2797,14 +2796,13 @@ SharkGame.HomeActions = { }, outcomes: [ "//*to be written in future*//", - ], multiOutcomes: [ "//*to be written in future*//", ], helpText: "Teach a mudskipper techniques on puppet work, so that it may pass on its knowledge.", }, // end of job code - + // CARACARA JOBS /////////////////////////// getRetrievalDuo: { name: "Pair retrieval duo", @@ -2828,13 +2826,12 @@ SharkGame.HomeActions = { }, outcomes: [ "//*to be written in future*//", - ], multiOutcomes: [ "//*to be written in future*//", ], helpText: "Leave an armoured mudskipper on a platform for a caracara to take and search for driftwood.", - }, //end of job code + }, // end of job code getConnoisseur: { name: "Employ connoisseur", effect: { @@ -2856,7 +2853,6 @@ SharkGame.HomeActions = { }, outcomes: [ "//*to be written in future*//", - ], multiOutcomes: [ "//*to be written in future*//", @@ -3193,7 +3189,6 @@ SharkGame.HomeActions = { }, // end of place code }, - // --------------------------------------------------- shrouded: { catchFish: {}, @@ -4914,7 +4909,6 @@ SharkGame.HomeActions = { "At least it's not gross.", "We would learn a lot more from these if they weren't so absolutely tiny.", ], - helpText: "Dissect seagrass flowers to further the cause of science. This is research, probably!", }, From eb2305a3ca656b5779ca0c915f59cef27520f803 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 09:48:47 +0400 Subject: [PATCH 128/152] -fixed even more bugs --- js/data/homeactions.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index ac0ad91e..35315823 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -2820,7 +2820,7 @@ SharkGame.HomeActions = { prereq: { resource: { caracara: 1, - mudskipper: 1 + mudskipper: 1, }, upgrade: ["beyondwalkerPairing"], }, @@ -2906,8 +2906,7 @@ SharkGame.HomeActions = { resource: { hardbark: 75, }, - upgrade: ["puppetAssembly"], - upgrade: ["laserRays"], + upgrade: ["puppetAssembly", "laserRays"], }, outcomes: [ "//*to be written in future*//", @@ -2944,7 +2943,7 @@ SharkGame.HomeActions = { "//*to be written in future*//", ], helpText: "Put together a raylike puppet to catch driftwood in a seagrass net.", - }, //end of machine code + }, // end of machine code getHardbarkSmith: { name: "Assemble hardbark smith", effect: { @@ -3097,7 +3096,7 @@ SharkGame.HomeActions = { "Imagine how much science must be in this place.", ], helpText: "Pick a spot and set up a seagrass farm there.", - }, //end of place code + }, // end of place code getShoreCoralFarm: { name: "Construct coral farm", effect: { @@ -3187,7 +3186,7 @@ SharkGame.HomeActions = { ], helpText: "Build a tall spire for extra collection of intel.", }, // end of place code - }, + }, // --------------------------------------------------- shrouded: { @@ -3787,7 +3786,7 @@ SharkGame.HomeActions = { getAutoTransmuter: {}, }, -//--------------------------------------------------- + // --------------------------------------------------- marine: { catchFish: {}, @@ -4214,7 +4213,7 @@ SharkGame.HomeActions = { }, }, -//--------------------------------------------------- + // --------------------------------------------------- volcanic: { // FREEBIES //////////////////////////////////////////////////////////////////////////////// @@ -4874,7 +4873,7 @@ SharkGame.HomeActions = { }, }, -//--------------------------------------------------- + // --------------------------------------------------- tempestuous: { catchFish: {}, From 6bcd68149dd829bc498af9a678966225abee9c02 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 12:46:12 +0400 Subject: [PATCH 129/152] -added mudskipper burrowing code --- js/data/upgrades.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index f6409054..e490bf02 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4682,6 +4682,21 @@ SharkGame.Upgrades = { seen: ["sand", "roughSand"], }, }, // prev name: stabilization + mudskipperBurrowing: { + name: "Mudskipper Burrowing", + desc: "The mudskippers want to tell us something. We will, of course, heed.", + researchedMessage: "Mudskipper burrows are now a thing. They do a lot of flailing in it. But they're happier now.", + effectDesc: "Mudskipper burrows can be dug. Now happier, mudskippers work two times faster.", + cost: { fish: 5 }, + required: { + upgrades: ["mudskipperContact", "seabedGeology"], + }, + effect: { + incomeMultiplier: { + mudskipper: 2, + }, + }, + }, hardbarkCoating: { name: "Hardbark Coating", desc: "Apparently, our sharkonium may have been mentioned in mudskipper tale.", From 1faace1c6eb6acbd4266e50e9237899a56855e9e Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 13:08:18 +0400 Subject: [PATCH 130/152] -added two new homemessages --- js/data/homemessages.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/js/data/homemessages.js b/js/data/homemessages.js index b72a6195..a4674c9b 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -546,6 +546,21 @@ SharkGame.HomeMessages = { unlock: { upgrade: ["mudskipperContact"] }, message: "These tiny fish aren't very remarkable - but what they (skittishly) bring back is another matter.", }, + { + name: "shore-flaily-flail", + unlock: { totalResource: { burrow: 5 }, }, + message: "The mudskippers flail in their newly-dug burrows. They say their dance is traditional, as are their oral tales.", + }, + { + name: "shore-hardbark-coated", + unlock: { upgrade: ["hardbarkCoating"] }, + message: "The wood of the simple (yet strong) hardbark looks a dark blue under the crystal. It's a wonder how it ended up with weird brown fish.", + }, + { + name: "shore-puppets-piloted", + unlock: { upgrade: ["puppetAssembly"] }, + message: "The frenzy move the puppets from within. It is nothing like our shark machines.", + }, ], /* stone: [ { From e7620d6e5cf4d252d0884529e63493bcb35de5be Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 15:34:34 +0400 Subject: [PATCH 131/152] -I forgot some of the upgrades --- js/data/upgrades.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index e490bf02..74ae84d6 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4663,10 +4663,18 @@ SharkGame.Upgrades = { }, }, // gosh that's a lot of crystals eh --ThreeEels crystalContainer: { required: { upgrades: ["justPushFurtherLol"] } }, + statsDiscovery: {}, seabedGeology: {}, underwaterChemistry: {}, thermalVents: {}, laserRays: {}, + sunObservation: {}, + transmutation: {}, + automation: {}, + recyclerDiscovery: { required: { upgrades: ["farExploration"] } }, + engineering: {}, + iterativeDesign: {}, + superprocessing: {}, agriculture: { name: "Stabilization", desc: "The rays and crabs have noticed something strange about the sand around these colourful growths...", @@ -4707,7 +4715,7 @@ SharkGame.Upgrades = { hardbark: 25, }, required: { - upgrades: ["driftwoodAnalysis"], + upgrades: ["driftwoodAnalysis", "automation"], seen: ["driftwood", "crystal"], }, }, From 7981f189532897bbdaf06aa8df2a825c7ef53dc7 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 15:40:40 +0400 Subject: [PATCH 132/152] -added some more default upgrades --- js/data/upgrades.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 74ae84d6..fd24c9d8 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -3953,7 +3953,7 @@ SharkGame.Upgrades = { researchedMessage: "We refuse to accept the narrative the billfish are pushing on us, but the scientists are adamant. They say they are literally just fish with big noses.", effectDesc: - "Billfish are four times more effective, and billfish pairs are available. I swear, our scientists must be losing it - these things are not fish, surely.", + "Billfish are four times more effective, and billfish pairs are available. I swear, our scientists must be losing it - these things are not fish, surely.", // says the also large fish cost: { science: 4000, fish: 20000, @@ -4667,6 +4667,9 @@ SharkGame.Upgrades = { seabedGeology: {}, underwaterChemistry: {}, thermalVents: {}, + biology: {}, + rayBiology: {}, + crabBiology: {}, laserRays: {}, sunObservation: {}, transmutation: {}, From 980e19659c2c7e49e1c9670327400c6bc8fb397c Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 15:49:29 +0400 Subject: [PATCH 133/152] -thing --- js/data/upgrades.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index fd24c9d8..28147de3 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4531,8 +4531,8 @@ SharkGame.Upgrades = { template: { name: "Upgrade Template", desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", + researchedMessage: "...and this is the one that appears in the log!", + effectDesc: "This one, however, is the text that goes next to the buttons.", cost: { }, required: { }, effect: { }, @@ -4681,7 +4681,7 @@ SharkGame.Upgrades = { agriculture: { name: "Stabilization", desc: "The rays and crabs have noticed something strange about the sand around these colourful growths...", - researchedMessage: "bla bla bla don't have time rn", + researchedMessage: "The mudskippers suggested something from their oral tales called a 'farm'. It's... surprisingly useful.", effectDesc: "Seagrass farms and coral farms are now available.", cost: { sand: 5000, @@ -4739,8 +4739,8 @@ SharkGame.Upgrades = { fixModels: { name: "Fix Models", desc: "They're not done???", - researchedMessage: "Well... they're 'refined'.", - effectDesc: "aabbabababa", + researchedMessage: "Well... they've been 'refined'.", + effectDesc: "Mudskipper puppets are five times as effective.", cost: { hardbark: 500, science: 15000, @@ -4759,9 +4759,9 @@ SharkGame.Upgrades = { }, puppetTeaching: { name: "Puppet Teaching", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", + desc: "The mudskippers (again) have something from their tales that could help with the puppets.", + researchedMessage: "Mudskippers can now be trained (for some reason) and become 'mentors'. Seems like a waste of science to me.", + effectDesc: "Puppet mentors can be trained.", cost: { mudskipper: 500, science: 15000, From ec8f623cfcc045c6e6fadea92a4a4143e308755f Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 16:02:51 +0400 Subject: [PATCH 134/152] -filled some stuff out --- js/data/upgrades.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 28147de3..74c1df2d 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4780,27 +4780,27 @@ SharkGame.Upgrades = { }, exploration: { name: "Tunnel Expedition", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", + desc: "Some of the frenzy has noticed something strange in the eastern regions.", + researchedMessage: "It's a tunnel in the sand wall. And it led to a massive latch at the end of it.", + effectDesc: "We have found a place where we can finally not get bombarded with rough sand. But what's beyond it?", cost: { fish: 5 }, required: { upgrades: ["puppetTeaching"] }, effect: { }, }, // prev name: tunnelExpedition farExploration: { name: "Sentinel Repairing", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", + desc: "So, the thing above the latch. We have its parts.", + researchedMessage: "We managed to repair the sentinel. As soon as it started, it opened the latch for us.", + effectDesc: "The latch is open. We surged forth into the safehold.", cost: { fish: 5 }, required: { upgrades: ["exploration"] }, effect: { }, }, // prev name: thingyRepairing raiderTruce: { name: "Raider Truce", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", + desc: "Someone keeps raiding us!!!", + researchedMessage: "We held up some fish as an offering. They were snatched from us, and... they came.", + effectDesc: "The mudskippers (and crabs) told us the 'raiders' are named caracaras. They're very prideful.", cost: { fish: 5 }, required: { upgrades: ["farExploration"] }, effect: { }, From 0ff9dc9c6204ea0444c6700fcbeda466cfb0c21b Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 16:28:47 +0400 Subject: [PATCH 135/152] -fixed singular bug --- js/data/homemessages.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/homemessages.js b/js/data/homemessages.js index a4674c9b..aa922a11 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -548,7 +548,7 @@ SharkGame.HomeMessages = { }, { name: "shore-flaily-flail", - unlock: { totalResource: { burrow: 5 }, }, + unlock: { totalResource: { burrow: 5 } }, message: "The mudskippers flail in their newly-dug burrows. They say their dance is traditional, as are their oral tales.", }, { From 6bdb960849db6c373b933168c891cfdac9abc4a8 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 17:11:08 +0400 Subject: [PATCH 136/152] -added some blank stuff --- js/data/homeactions.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 35315823..77c953de 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -2650,10 +2650,15 @@ SharkGame.HomeActions = { helpText: "Coat sturdy driftwood pieces with crystal to make hardbark.", }, - // BUY ANIMALS ///////////////////////////////// + // BUY ANIMALS (and jobs) ///////////////////////////////// getShark: {}, // end of creature code + getScientist: {}, // end of job code + getNurse: {}, // end of breeder code getManta: {}, // end of creature code + getLaser: {}, // end of job code + getMaker: {}, // end of breeder code getCrab: {}, // end of creature code + getBrood: {}, // end of breeder code getMudskipper: { name: "Liberate mudskipper", effect: { From 40b48f2794ea4f39cedc612e856ff99642dfbb1b Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 17:57:41 +0400 Subject: [PATCH 137/152] -maybe this will load the styles --- css/style.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/css/style.css b/css/style.css index 913e1a0b..761e9612 100644 --- a/css/style.css +++ b/css/style.css @@ -67,6 +67,14 @@ --color-dark: #053247; --color-darker: #001d2b; --color-title: rgba(29, 83, 114, 0.2); +} + :root :not(.no-theme).shore { + --color-lighter: #ffdf80; /* potential other shade: #284d00 */ + --color-light: #ffd24d; + --color-med: #ffbf00; + --color-dark: #cc9900; + --color-darker: #997300; + --color-title: rgba(255, 238, 52, 0.2); } :root :not(.no-theme).shrouded { --color-lighter: #22bec3; From a82ff51f2a4bd29df9a9f18ca90bb94dd74c8b03 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 20:54:12 +0400 Subject: [PATCH 138/152] -literally nothing From c709170766a72dc806487c4c13dc18a055fc7862 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Thu, 29 Jan 2026 16:57:54 +0000 Subject: [PATCH 139/152] Built Stylesheet --- css/style.css | 6 +++--- css/style.css.map | 2 +- css/style.min.css | 2 +- css/style.min.css.map | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/css/style.css b/css/style.css index 761e9612..6ea4e8bf 100644 --- a/css/style.css +++ b/css/style.css @@ -68,13 +68,13 @@ --color-darker: #001d2b; --color-title: rgba(29, 83, 114, 0.2); } - :root :not(.no-theme).shore { - --color-lighter: #ffdf80; /* potential other shade: #284d00 */ +:root :not(.no-theme).shore { + --color-lighter: #ffdf80; --color-light: #ffd24d; --color-med: #ffbf00; --color-dark: #cc9900; --color-darker: #997300; - --color-title: rgba(255, 238, 52, 0.2); + --color-title: rgba(255, 191, 0, 0.2); } :root :not(.no-theme).shrouded { --color-lighter: #22bec3; diff --git a/css/style.css.map b/css/style.css.map index 6ff82d25..ff15c98a 100644 --- a/css/style.css.map +++ b/css/style.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../styles/style.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../styles/style.scss"],"names":[],"mappings":"AAEA;AAAA;AAAA;AAiJA;EACI;EACA;EACA;EACA;;;AAyBJ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;;AAIR;EACI;;;AAGJ;AAAA;AAAA;AAIA;EACI;EACA;EACA;EACA;EACA;EACA;;AAGI;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAKZ;AAAA;AAAA;AAIA;EACI;;;AAGJ;EACI,OAnMS;EAoMT;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI,YAzNoB;;;AA4NxB;EACI;;;AAGJ;EACI,kBAlOmB;;;AAqOvB;EACI;EACA;;;AAIA;EAII;;AAGJ;EACI;;AAGJ;EACI;;;AAIR;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EAlRA,uBAoRuB;EAnRvB,oBAmRuB;EAlRvB,eAkRuB;EA9QvB;EACA;EACA;;;AAgRJ;EACI;EACA;EACA;EACA;EACA;EA7RA,uBA8RuB;EA7RvB,oBA6RuB;EA5RvB,eA4RuB;EACvB;EAEA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;;AAIR;EACI;;AAGJ;EACI;;AAGJ;EACI;;;AAIR;EACI;;;AAGJ;EACI;;;AAGJ;EAxVI,uBAyVuB;EAxVvB,oBAwVuB;EAvVvB,eAuVuB;EACvB;EACA;;;AAGJ;EAEI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EAEA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EAEI;;AAGJ;EACI;EACA;;AAGJ;EACI;;;AAIR;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAnZJ,uBAoZ2B;EAnZ3B,oBAmZ2B;EAlZ3B,eAkZ2B;;AAGvB;EACI;;AAGJ;EACI;;AAIJ;AAAA;AAAA;EAGI;EACA;;AAGJ;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EAEI;EACA;;AAEJ;AAAA;EACI;;AAIR;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;;;AAKZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;;AAKJ;AAAA;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EAjbJ;EACA;;AAEA;EACI;;AAGJ;EACI;;;AA8aR;EACI;;AAEA;EACI;EACA;EA3bJ;EACA;;AAEA;EACI;;AAGJ;EACI;;;AAwbR;EACI;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAIJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACI;EA5dR;EACA;;AAEA;EACI;;AAGJ;EACI;;AAwdA;EACI;;AAGJ;EACI;;AAKI;EACI,OA7jBF;EA8jBE;;AAEJ;EACI,OAjkBF;EAkkBE;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAOpB;EACI;;AACA;EACI;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA,OAtlBY;EAulBZ;EAEA;EAnkBA;EACA;EACA;;AAokBA;EAEI;;AAGA;EAEI;EACA;EACA;EACA;EACA;EACA;EAIA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EA/kBZ;EACA;EACA;EACA;EACA;;AAilBA;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;;;AAIR;EACI;EACA;;;AAGJ;EACI;AACA;AAAA;EAEA;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI,OA/rBM;EAgsBN;;AAGJ;EACI,OAjsBU;EAksBV;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAjrBJ;EACA;EACA;;AAkrBI;EACI;;AAGJ;EACI;EACA;EACA;;AACA;EACI;EACA;EACA;EACA;;AAIR;EACI;EACA;EACA;;AACA;EACI;EACA;EACA;EACA;;AAIR;EACI;;;AAKZ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EAEI,aACI;;;AAKR;EAEI;EAxuBA;EACA;EACA;EAwuBA;;AAEA;EACI;;;AAIR;EACI;EAEA;EACA;EAvwBA,uBAwwBuB;EAvwBvB,oBAuwBuB;EAtwBvB,eAswBuB;EAtvBvB;EACA;EACA;EAsvBA;;;AAGJ;EACI;EACA;;;AAGJ;EAEI;;AAEA;EAGI;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;;AAIR;EACI;;AACA;EACI;;;AAKZ;EAEI;;;AAGJ;EACI;;AAEA;EACI;EACA;;AAGJ;EAhwBA;EACA;;AAEA;EACI;;AAGJ;EACI;;AA8vBI;EACI,OAz1BE;EA01BF;;AAEJ;EACI,OA71BE;EA81BF;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAMhB;EACI;EACA;;;AAOJ;EAEI;;;AAIA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACI;EACA;EACA;;;AAIR;EACI;;;AAIJ;EACI;EACA;;;AAIJ;EACI;EACA;;;AAIJ;EACI;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;;;AAKJ;EACI;EACA;;;AAIR;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;;AAQR;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EA38BJ;EACA;EACA;EA28BI;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;;;AAQR;EACI;EACA;EACA;;AACA;EACI;;;AAIR;EACI;EACA,OApgCS;EAMT,uBAggCuB;EA//BvB,oBA+/BuB;EA9/BvB,eA8/BuB;EACvB;EAEA;EACA;EACA;EACA;EACA;EAz9BA;EACA;EACA;EACA;EACA;EAu9BA;EAEA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EA7hCA;EACA;EACA;;AAiiCA;EAEI;EACA;EA1hCJ;EACA;EACA;;AA2hCI;EACI;EACA;EACA;;AAGJ;EAziCJ;EACA;EACA;EAyiCQ;;AAIR;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;;AAGJ;EAxkCJ;EACA;EACA;EAwkCQ;;;AAKZ;EACI;EACA;EACA;EACA;EACA;EACA,OAvmCS;EAwmCT;;AAEA;EACI;EACA;EACA;EACA;EACA;;;AAQR;EACI;EACA;EACA;EA9mCA;EACA;EACA;EARA,uBAunCuB;EAtnCvB,oBAsnCuB;EArnCvB,eAqnCuB;;;AAI3B;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAGA;EACI;;;AAIR;EACI;;;AAGJ;EACI;EACA;EAnpCA,uBAopCuB;EAnpCvB,oBAmpCuB;EAlpCvB,eAkpCuB;EA9oCvB;EACA;EACA;;;AAgpCJ;EAlpCI;EACA;EACA;;;AAqpCJ;EAvpCI;EACA;EACA;;;AA0pCJ;AAAA;EAEI;;;AAGJ;EAvoCI,iBAwoCiB;EAvoCjB,cAuoCiB;EAtoCjB,SAsoCiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EAlpCI,iBAmpCiB;EAlpCjB,cAkpCiB;EAjpCjB,SAipCiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAIJ;EAEI;;;AAGJ;EACI;EACA;EACA;;;AAIJ;EACI;EACA;EACA;;;AAIJ;EAprCI;EACA;EACA;EACA;EACA;EAkrCA;EACA;EACA;EACA;;;AAKJ;EACI;EA3tCA;EACA;EACA;EA2tCA;EA/uCA,uBAgvCuB;EA/uCvB,oBA+uCuB;EA9uCvB,eA8uCuB;EACvB;EACA;EACA;EACA;EACA;EACA;EA9tCA;EACA;EACA;EACA;EACA;EA4tCA;EACA;EACA;EAEA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;;AACA;EACI;;AAIR;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAEA;EACI;;AAIR;EACI;EACA;;AAGJ;EACI;;;AAMR;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;EACA,OA90CU;;AAi1Cd;EACI;EACA,OAn1CU;;AAs1Cd;EACI;EACA,OAx1CU;;AA21Cd;EACI;;AAGJ;EACI,OAh2CU;;;AAo2ClB;AAAA;EACI,kBAl2CoB;EAm2CpB,cAt2Cc;EAu2Cd;;AAEA;AAAA;EACI,kBAz2Ce;EAiBnB;EACA;EACA;;AA01CA;AAAA;EA51CA;EACA;EACA;;AAg2CA;AAAA;EACI,kBAj3CgB;EAk3ChB,OAr3Ce;EA6BnB;EACA;EACA;;AAy1CI;AAAA;EACI;;AAGJ;AAAA;EACI,kBA33CY;EAqBpB;EACA;EACA;;AAy2CA;AAAA;EACI,kBAh4CgB;EAi4ChB;EACA;;AAEA;AAAA;EACI;;AAGJ;AAAA;EACI,kBAz4CY;EAoBpB;EACA;EACA;;AAw3CA;AAAA;EACI;EACA,kBAl5CgB;;;AA25CxB;EAj5CI,uBAk5CuB;EAj5CvB,oBAi5CuB;EAh5CvB,eAg5CuB;EACvB,kBA55CoB;EAepB;EACA;EACA;EA64CA;;AAEA;AAAA;EAEI;;AAGJ;EA55CA,uBA65C2B;EA55C3B,oBA45C2B;EA35C3B,eA25C2B;EAv5C3B;EACA;EACA;EAu5CI;EACA;EACA;EACA;;;AAIR;EAt4CI,iBAu4CiB;EAt4CjB,cAs4CiB;EAr4CjB,SAq4CiB;EACjB,kBAh7CoB;;;AAm7CxB;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI,OAv8CU;EAw8CV,aACI;;;AAKR;EACI;EACA;;AAEA;EACI;EACA;;;AAIR;EACI;EACA;;AACA;EACI;;;AAIR;EACI,kBAz9CoB;EA09CpB,cA79Cc;EA89Cd,OAx9CS;EAy9CT;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI,kBA1+CoB;;;AA6+CxB;EACI,kBA9+CoB;;;AAi/CxB;EACI;;;AAGJ;EACI;;AAII;AAAA;AAAA;EACI,kBA7/CY;;;AAkgDxB;EACI;EACA;EA1/CA,uBA4/CuB;EA3/CvB,oBA2/CuB;EA1/CvB,eA0/CuB;EACvB,kBAtgDoB;EAepB;EACA;EACA;EAu/CA;EACA;EACA;;AAEA;AAAA;EA7/CA;EACA;EACA;;;AAggDJ;EACI;EACA;EA1gDA,uBA4gDuB;EA3gDvB,oBA2gDuB;EA1gDvB,eA0gDuB;EACvB,kBArhDoB;EAcpB;EACA;EACA;EAugDA;EACA;EACA;;AAEA;AAAA;EA7gDA;EACA;EACA;;;AAghDJ;EAxhDI,uBAyhDuB;EAxhDvB,oBAwhDuB;EAvhDvB,eAuhDuB;EACvB,kBAriDmB;EAiBnB;EACA;EACA;EAohDA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EAtiDA,uBAuiD2B;EAtiD3B,oBAsiD2B;EAriD3B,eAqiD2B;;AAG3B;EACI,aACI;EAhiDR;EACA;EACA;;AAmiDI;EA3iDJ;EACA;EACA;;AA8iDA;EA1iDA;EACA;EACA;;;AA6iDJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;;;AAIR;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA,cArnDoB;;AAsnDpB;EACI,kBAvnDgB;EAwnDhB;;AAEJ;EACI,kBA5nDgB;EA6nDhB,cA9nDgB;;;AAkoDxB;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAIA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAKJ;EACI;EACA;;;AAKZ;EACI;;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;;AAKZ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;;AAKZ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA,cAjvDoB;EAkvDpB,YAjvDoB;;AAmvDpB;EACI;;AAGJ;EACI;EACA,cA3vDgB;EA4vDhB,YA3vDgB;;AA6vDhB;EACI;EACA,cAhwDY;EAiwDZ;;AAGJ;EACI;EACA,cAtwDY;EAuwDZ;;AAGJ;EACI;EACA,cA7wDW;EA8wDX,YA7wDY;;AAgxDhB;EACI;EACA,cApxDM;EAqxDN;;AAGJ;EACI;EACA;EACA,YA1xDW;;AA8xDnB;EACI,cA5xDgB;;;AAgyDxB;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;AAEA;EACI;EACA;EACA;;;AAIR;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA,cAp1DoB;EAq1DpB,YAp1DoB;;AAs1DpB;EACI;EACA,cA11DgB;EA21DhB;;;AAIR;EACI,YA91DoB;EA+1DpB;EACA,cAj2DoB;;AAm2DpB;EACI;EACA;EACA;;AAGJ;EACI,YA12DgB;EA22DhB,cA52DgB;EA62DhB;;AAGJ;EACI,YAj3DgB;EAk3DhB,cAn3De;EAo3Df;;AAGJ;EACI,YAx3De;EAy3Df,cA13DU;EA23DV;;AAGJ;EACI,YA/3DU;EAg4DV;EACA;;;AAIR;EACI;;AAEA;EACI;;;AAIR;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;AAEA;EACI;;;AAIR;EACI;;;AAGJ;EACI;;;AAIA;EACI;;;AAIR;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAIR;EACI","file":"style.css"} \ No newline at end of file diff --git a/css/style.min.css b/css/style.min.css index e3ac35ec..fd24a228 100644 --- a/css/style.min.css +++ b/css/style.min.css @@ -1 +1 @@ -.fill-available-width,#sidebar #resourceTableContainer table{width:100%;width:fill-available;width:-moz-available;width:-webkit-fill-available}.clear-fix{display:block;zoom:1}.clear-fix:after{content:" ";display:block;font-size:0;height:0;clear:both;visibility:hidden}.bold{font-weight:bold}:root{--color-lighter: #8e9fc0;--color-light: #536892;--color-med: #2e4372;--color-dark: #152a55;--color-darker: #061639;--color-title: rgba(46, 67, 114, 0.2)}:root :not(.no-theme).abandoned{--color-lighter: #7e798f;--color-light: #454152;--color-med: #1f1b2c;--color-dark: #171226;--color-darker: #0a0514;--color-title: rgba(31, 27, 44, 0.2)}:root :not(.no-theme).chaotic{--color-lighter: #a2b3ae;--color-light: #69877d;--color-med: #45695d;--color-dark: #26453b;--color-darker: #113a2d;--color-title: rgba(69, 105, 93, 0.2)}:root :not(.no-theme).frigid{--color-lighter: #c0cdd4;--color-light: #5d829b;--color-med: #2f5d7c;--color-dark: #14415f;--color-darker: #05283f;--color-title: rgba(47, 93, 124, 0.2)}:root :not(.no-theme).haven{--color-lighter: #75aab6;--color-light: #2f7591;--color-med: #1d5372;--color-dark: #053247;--color-darker: #001d2b;--color-title: rgba(29, 83, 114, 0.2)}:root :not(.no-theme).shrouded{--color-lighter: #22bec3;--color-light: #302d39;--color-med: #121019;--color-dark: #0f0b18;--color-darker: #0a0613;--color-title: rgba(18, 16, 25, 0.2)}:root :not(.no-theme).tempestuous{--color-lighter: #858d9e;--color-light: #5e687e;--color-med: #3e4960;--color-dark: #253046;--color-darker: #121a2b;--color-title: rgba(62, 73, 96, 0.2)}:root :not(.no-theme).volcanic{--color-lighter: #cf9d9d;--color-light: #8f5252;--color-med: #681e1e;--color-dark: #521212;--color-darker: #2b0707;--color-title: rgba(104, 30, 30, 0.2)}html{min-height:100%}body{color:#fff;background-color:var(--color-darker);font-family:Verdana,Geneva,sans-serif;font-size:13pt;text-align:center;min-height:100%;overflow-y:auto}::-webkit-scrollbar{width:initial}::-webkit-scrollbar-track{background:var(--color-med)}.gateway::-webkit-scrollbar-track{background:rgb(55.6216216216,164.8783783784,129.1216216216)}::-webkit-scrollbar-thumb{background-color:var(--color-light)}.gateway::-webkit-scrollbar-thumb{background-color:rgb(95.7297297297,201.2702702703,166.7297297297)}div{padding:0;margin:0}a:active,a:hover,a:visited,a:link{color:var(--color-lighter)}a:hover{filter:brightness(125%)}a:active{filter:brightness(135%)}h1{color:var(--color-lighter);filter:brightness(130%);font-size:2em;text-shadow:0 0 .3em var(--color-darker)}h2{color:var(--color-lighter);font-size:1.3em;text-shadow:0 0 .3em var(--color-darker)}h3{color:var(--color-lighter);font-size:1.1em;text-align:center;text-shadow:0 0 .3em var(--color-darker)}h4{color:var(--color-lighter);font-size:.8em;text-align:center;text-shadow:0 0 .3em var(--color-darker)}#shareWrapper{margin-left:auto;margin-right:auto;display:inline-block;text-align:center;margin-top:.8em;margin-bottom:.2em;background:var(--color-med);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 2px 2px var(--color-med);-moz-box-shadow:0 0 2px 2px var(--color-med);box-shadow:0 0 2px 2px var(--color-med)}#wrapper{background-color:var(--color-dark);margin-left:auto;margin-right:auto;margin-top:2.5em;padding:10px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;height:100%;min-height:90vh;display:flex;flex-direction:column}#wrapper #game{flex:1 0 auto}#wrapper #devs{align-items:center;display:flex;flex-direction:column}#wrapper #devs>ul{margin:0;padding:0;list-style-type:none}#wrapper #devs tr{text-align:right}#wrapper #devs tr td{padding-left:1rem;padding-right:1rem;width:50%}#wrapper #devs tr td:nth-child(2){text-align:left}#wrapper #copyright{flex-shrink:0}#wrapper.topLogActive{margin-top:4.8em}#wrapper.notMinimized{margin-top:0}pre{text-align:left}#game{display:none}.section,#content,#sidebar,#title{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:5px;overflow:hidden}.inner-section,#statsContainer,#buttonList,#tabMessage{padding:5px;margin:5px}.click-passthrough,.largeDesc,.medDesc,.smallDesc,.smallDescAllowClicks,#tabSceneTracker,.button-icon,.top-bar #title #titlebar,.top-bar #title{pointer-events:none}#title{clear:both;text-shadow:2px 2px 3px var(--color-darker);margin-bottom:1em;box-shadow:0 4px 4px 4px var(--color-darker);background-image:url("../img/sharklogo.png");background-position:center;background-repeat:no-repeat}#title.radical{background-image:url("../img/sharklogo_radical.png")}#title h1{margin:.1em auto .3em auto}#title h2{text-align:left;margin:.2em}#title h4{margin:.2em auto 1.5em}.top-bar{margin-top:35px}.top-bar #title{padding:0;width:100%;height:4.3em;position:fixed;background-image:none;font-size:initial;left:0;top:0;box-shadow:none;margin-bottom:0;z-index:2;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.top-bar #title.biggerTitleDiv{height:13em}.top-bar #title #titlebar{width:100%}.top-bar #title #gameName,.top-bar #title #versionNumber,.top-bar #title #updateGame{display:none;pointer-events:all}.top-bar #title #titlemenu,.top-bar #title #subtitlemenu{pointer-events:all;float:left;font-size:initial;height:auto;margin:.2em .8em;overflow:hidden;text-align:center;font-weight:bold}.top-bar #title #titlemenu a:link,.top-bar #title #titlemenu a:visited,.top-bar #title #subtitlemenu a:link,.top-bar #title #subtitlemenu a:visited{color:var(--color-lighter);filter:none}.top-bar #title #titlemenu a:hover,.top-bar #title #subtitlemenu a:hover{filter:brightness(130%)}.top-bar #title #subtitlemenu{float:right}.top-bar #title li{font-size:initial;pointer-events:all}.top-bar #title #log{pointer-events:all}.top-bar #title #titlebackground{display:block}#titlebackground{height:2em;display:none;background-color:var(--color-med);position:fixed;width:100%;z-index:-1;box-shadow:0 4px 4px 4px var(--color-darker)}#titlebackground.topLogActive{height:4.3em}#titlebar{height:auto;margin:0 auto;overflow:hidden;text-align:center;font-weight:bold;color:var(--color-lighter);font-size:1.3em}#titlebar ul{padding:.2em 0;margin:.4em auto .6em auto}#titlemenu a:link,#titlemenu a:visited{color:var(--color-lighter);filter:brightness(125%)}#titlemenu a:hover{color:var(--color-lighter);filter:brightness(130%)}#titlemenu li{padding:0;margin:0;list-style-type:none;display:inline}#titlemenu li:before{content:" | "}#titlemenu li:first-child:before{content:none}#subtitlemenu{font-size:.8em}#subtitlemenu li{padding:0;margin:0;list-style-type:none;display:inline}#subtitlemenu li:before{content:" | "}#subtitlemenu li:first-child:before{content:none}#contentMenu{overflow:hidden;min-height:1.8em}#contentMenu ul{padding:0;margin:0}#contentMenu li{padding:0;margin:0;list-style-type:none;display:inline}#contentMenu #tabList{float:left;position:fixed;margin-bottom:.4em;margin-left:1em;box-shadow:0 0 10px 10px var(--color-dark);background-color:var(--color-dark);z-index:1}#contentMenu #tabList li{font-weight:bold;list-style-type:none;display:inline}#contentMenu #tabList li:before{content:" | "}#contentMenu #tabList li:first-child:before{content:none}#contentMenu #tabList:empty{box-shadow:none}#contentMenu #tabList.notFixed{position:static}#contentMenu #tabList .newTab a:link{color:#ace3d1;text-shadow:0 0 .8em rgb(95.7297297297,201.2702702703,166.7297297297)}#contentMenu #tabList .newTab a:visited{color:#ace3d1;text-shadow:0 0 .8em rgb(95.7297297297,201.2702702703,166.7297297297)}#contentMenu #tabList .newTab a:hover{color:rgb(210.1351351351,239.8648648649,230.1351351351);text-shadow:0 0 .8em rgb(133.8648648649,214.1351351351,187.8648648649)}#contentMenu #tabList .newTab a:active{color:rgb(210.1351351351,239.8648648649,230.1351351351);text-shadow:0 0 .8em rgb(133.8648648649,214.1351351351,187.8648648649)}#buyButtons{padding-left:0px}#buyButtons li{padding:0;margin:0;list-style-type:none;display:inline}#sidebar{float:left;text-align:left;width:25%;background-color:var(--color-med);text-shadow:0px 0px 2px #000;-webkit-box-shadow:0 0 5px 5px var(--color-dark) inset;-moz-box-shadow:0 0 5px 5px var(--color-dark) inset;box-shadow:0 0 5px 5px var(--color-dark) inset}#sidebar #resourceTableContainer{margin:0}#sidebar #resourceTableContainer table{margin:0;background-color:var(--color-darker);border:1px solid var(--color-lighter);padding:.5em;overflow:hidden;text-align:left;border-spacing:0 .1em}#sidebar #resourceTableContainer table .highlightedIncome{background-color:var(--color-light)}#sidebar #resourceTableContainer table .highlightedResource{background-color:var(--color-light)}#sidebar #resourceTableContainer table h3{padding:.2em;width:auto;margin:auto;font-size:.9em;color:var(--color-lighter),20%;filter:brightness(120%);border-top:.1em dashed var(--color-lighter);border-bottom:.1em dashed var(--color-lighter);background:var(--color-dark);cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#sidebar td{font-size:1.1em;padding:.1em;word-break:break-all;word-wrap:break-word;background-repeat:no-repeat;background-position:right}#sidebar ul{list-style-type:none;padding:0;margin:0}#sidebar li{padding:.5em;margin:0}#status{margin:5px;padding:0}#log{overflow:hidden;overflow-anchor:none;position:relative}#log li{display:block;padding-top:.1em;padding-bottom:.1em}#log h3{display:block;text-align:center}#log .error{color:#e03030;text-shadow:0 0 .8em maroon}#log .discovery{color:#ace3d1;text-shadow:0 0 .8em rgb(95.7297297297,201.2702702703,166.7297297297)}#log #messageList{box-sizing:border-box;text-align:center;padding:0;overflow-y:hidden;max-height:9em;margin-top:0;margin-bottom:0;border-style:solid;border-width:2px;background-color:var(--color-med);-webkit-box-shadow:0 0 2px 2px var(--color-dark) inset;-moz-box-shadow:0 0 2px 2px var(--color-dark) inset;box-shadow:0 0 2px 2px var(--color-dark) inset}#log #messageList.scrollable{overflow-y:auto}#log #messageList.forRightSide{overflow-y:auto;border-style:none;max-height:39em}#log #messageList.forRightSide li{padding-top:1em;padding-bottom:1em;padding-left:.4em;padding-right:.4em}#log #messageList.forLeftSide{overflow-y:auto;border-style:none;max-height:30em}#log #messageList.forLeftSide li{padding-top:1em;padding-bottom:1em;padding-left:.4em;padding-right:.4em}#log #messageList .evenMessage{background-color:var(--color-dark)}#rightLogContainer{float:right;width:18%;background-color:var(--color-med);box-shadow:0 0 5px 5px var(--color-dark) inset;overflow:clip}#resource-numen{text-shadow:0 0 .3em #fff,0 0 .6em #fff,0 0 .8em #fff}#content{background-color:var(--color-med);-webkit-box-shadow:0 0 5px 5px var(--color-dark) inset;-moz-box-shadow:0 0 5px 5px var(--color-dark) inset;box-shadow:0 0 5px 5px var(--color-dark) inset;padding:.5em}#content #helpButton{padding:2px 5px 2px 5px}#tabMessage{position:relative;padding:1.4em;background:repeat-x center;-webkit-border-radius:.5em;-moz-border-radius:.5em;border-radius:.5em;-webkit-box-shadow:0 0 30px 30px var(--color-med) inset;-moz-box-shadow:0 0 30px 30px var(--color-med) inset;box-shadow:0 0 30px 30px var(--color-med) inset;text-shadow:0 0 .3em var(--color-dark)}#extraMessage{display:inline-block;width:400px}#buttonList{padding:1em}#buttonList button{touch-action:manipulation}#buttonList.homeScreen{display:flex;flex-wrap:wrap;justify-content:center}#buttonList.homeScreen ul{display:inline-block}#buttonList.homeScreen li{display:inline-block}#buttonList.homeScreen button{display:inline-block;margin:.4em;height:10em;width:12em}#buttonList.lab{width:100%}#buttonList.lab button{width:100%}button.newlyDiscovered{max-width:none}#homeTabs{margin-bottom:1em}#homeTabs ul{padding:0;margin:0}#homeTabs li{list-style-type:none;display:inline}#homeTabs li:before{content:" | "}#homeTabs li:first-child:before{content:none}#homeTabs .newItemAdded a:link{color:#ace3d1;text-shadow:0 0 .8em rgb(95.7297297297,201.2702702703,166.7297297297)}#homeTabs .newItemAdded a:visited{color:#ace3d1;text-shadow:0 0 .8em rgb(95.7297297297,201.2702702703,166.7297297297)}#homeTabs .newItemAdded a:hover{color:rgb(210.1351351351,239.8648648649,230.1351351351);text-shadow:0 0 .8em rgb(133.8648648649,214.1351351351,187.8648648649)}#homeTabs .newItemAdded a:active{color:rgb(210.1351351351,239.8648648649,230.1351351351);text-shadow:0 0 .8em rgb(133.8648648649,214.1351351351,187.8648648649)}#buttonLeftContainer{float:left;width:50%}#statsContainer{padding:1em}.statsInnerContainer table,#statsRightContainer table,#statsLeftContainer table,#statsUpperContainer table{text-align:left;margin-left:auto;margin-right:auto;padding:.1em;border:2px solid var(--color-lighter);border-collapse:collapse;background:var(--color-darker)}.statsInnerContainer td,#statsRightContainer td,#statsLeftContainer td,#statsUpperContainer td{margin:.2em;font-size:.9em;padding:.4em}#statsUpperContainer{width:100%}#statsLeftContainer{float:left;width:50%}#statsRightContainer{float:right;width:45%}#incomeData{padding:.1em .1em 1em;border-bottom:.1em dashed var(--color-lighter);text-shadow:0px 0px 2px #000}#incomeData .oddRow{background:var(--color-darker)}#incomeData .evenRow{background:var(--color-dark)}#incomeData .essenceGlow{text-shadow:0 0 1em #ace3d1;background:var(--color-dark)}#generalStats .timeDisplay{font-style:italic;font-size:110%}#disposeResource{padding:.1em .1em .5em;border-bottom:.1em dashed var(--color-lighter)}#upgradeList{float:right;text-align:left;margin:auto;width:40%;padding:.2em .2em .2em 2em;border-left:.1em dashed var(--color-lighter);text-shadow:0px 0px 2px #000}#upgradeList ul{list-style-type:square;padding:0;margin:0;max-height:600pt;overflow-y:auto}#upgradeList li{padding:.5em .5em .5em .2em;margin:0}#recyclerContainer{margin:0 auto;overflow:hidden;max-width:55em}#recyclerContainer>#inputButtons{float:left;margin:auto;width:35%;text-shadow:0px 0px 2px #000}#recyclerContainer>#junkDisplay{position:relative;float:left;margin:auto;width:25%;background:#450808 url("../img/recyclerbg.png") center;color:hsl(0,22.7642276423%,78.2352941176%);border:.2em solid #975f5f;-webkit-box-shadow:0 0 15px 15px #450808 inset;-moz-box-shadow:0 0 15px 15px #450808 inset;box-shadow:0 0 15px 15px #450808 inset;padding:.5em;text-shadow:0px 0px 2px #000}#recyclerContainer>#outputButtons{float:left;margin:auto;width:35%;text-shadow:0px 0px 2px #000}#recyclerContainer #buyButtons{padding-left:0px}#updateGameBox{bottom:15px;right:15px;cursor:pointer}#updateGameBox:empty{display:none}button{background-color:var(--color-light);color:#fff;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;border:2px solid var(--color-lighter);padding:10px;margin:1% auto;cursor:pointer;display:block;min-width:12em;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-shadow:0px 0px 2px #000;font-size:100%}button.min{padding:.1em;margin:0px 2px 3px;min-width:0;display:inline;border-radius:5px}button.min-block{padding:.1em;margin:auto;min-width:0;vertical-align:super;border-radius:5px}button.close-button{padding:0 3.5px;margin:auto;float:right}button:hover{-webkit-box-shadow:0px 0px 2px 2px var(--color-lighter);-moz-box-shadow:0px 0px 2px 2px var(--color-lighter);box-shadow:0px 0px 2px 2px var(--color-lighter)}button:active,button.keep-button-pressed{background-color:var(--color-dark);color:var(--color-light);-webkit-box-shadow:0px 3px 7px 7px var(--color-darker) inset;-moz-box-shadow:0px 3px 7px 7px var(--color-darker) inset;box-shadow:0px 3px 7px 7px var(--color-darker) inset}button:active .medDesc,button.keep-button-pressed .medDesc{font-size:80%;color:var(--color-lighter);filter:brightness(80%)}button:active div,button.keep-button-pressed div{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:var(--color-dark)}button:focus{outline:0}button.disabled{background-color:var(--color-darker);color:var(--color-lighter);filter:brightness(80%);cursor:default;border-color:var(--color-med)}button.disabled:hover{box-shadow:none}button.disabled:active{box-shadow:none}button.disabled .medDesc{font-size:80%;color:var(--color-lighter);filter:brightness(75%)}button.disabled div{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:var(--color-darker)}#custom-input{padding:.1em;margin:0px 2px 3px;width:6em;background-color:var(--color-light);border-color:var(--color-lighter);color:#fff;font-size:90%}#custom-input[disabled]{background-color:var(--color-darker);color:var(--color-lighter);filter:brightness(80%);cursor:default;border-color:var(--color-med)}.button-icon{background-color:var(--color-lighter);display:block;margin:0 auto .4em auto;-webkit-box-shadow:0 0 3px 3px var(--color-lighter);-moz-box-shadow:0 0 3px 3px var(--color-lighter);box-shadow:0 0 3px 3px var(--color-lighter);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.gives-consumer{box-shadow:0 0 3px 1px red inset}#tabSceneTracker{position:absolute;width:100%;top:0;left:0;display:flex;justify-content:center}#tabSceneTracker .inactive{color:var(--color-dark)}#tabSceneDiv{display:flex}#tabSceneImage,#tabSceneImageEssence,#tabSceneImageRed{display:block;margin:.1em auto .4em auto;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 0 5px 5px var(--color-dark);-moz-box-shadow:0 0 5px 5px var(--color-dark);box-shadow:0 0 5px 5px var(--color-dark)}#tabSceneImageRed{-webkit-box-shadow:0 0 5px 5px #5c1919;-moz-box-shadow:0 0 5px 5px #5c1919;box-shadow:0 0 5px 5px #5c1919}#tabSceneImageEssence{-webkit-box-shadow:0 0 5px 5px rgb(62.0540540541,183.9459459459,144.0540540541);-moz-box-shadow:0 0 5px 5px rgb(62.0540540541,183.9459459459,144.0540540541);box-shadow:0 0 5px 5px rgb(62.0540540541,183.9459459459,144.0540540541)}#sceneLeft,#sceneRight{min-width:0}#overlay{-webkit-opacity:.5;-moz-opacity:.5;opacity:.5;position:fixed;top:0;left:0;background-color:#000;width:100%;height:100%;z-index:10}#idle-overlay{-webkit-opacity:.8;-moz-opacity:.8;opacity:.8;position:fixed;top:0;left:0;background-color:#000;width:100%;height:100%;z-index:20;display:flex;justify-content:center;align-items:center;flex-direction:column}.pointy{cursor:pointer}.littleGeneralText{font-size:10pt}.smallDesc,.smallDescAllowClicks{font-size:80%;color:var(--color-lighter)}.smallDescAllowClicks{pointer-events:auto}.medDesc{font-size:80%;color:var(--color-lighter);filter:brightness(130%)}.largeDesc{font-size:125%;color:var(--color-lighter);filter:brightness(130%)}.copyrightNotice{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:80%;color:var(--color-lighter);filter:brightness(130%);position:static}#pane{background-color:var(--color-dark);-webkit-box-shadow:0 0 5px 5px var(--color-darker) inset;-moz-box-shadow:0 0 5px 5px var(--color-darker) inset;box-shadow:0 0 5px 5px var(--color-darker) inset;filter:brightness(98%);-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:1em 2em;margin:auto;overflow:auto;position:fixed;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-moz-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);-o-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);border:double var(--color-med);max-height:90%;max-width:90%;z-index:11}#pane h2{padding-bottom:.5em}#pane #paneHeaderEnd{border-bottom:.5em double var(--color-med)}#pane #paneHeaderTitleDiv{vertical-align:middle;display:inline;text-align:left}#pane #paneHeaderTitleDiv h3{display:inline}#pane #paneHeaderCloseButtonDiv{vertical-align:middle;text-align:right}#pane table{margin:auto;text-align:left}#pane .option-button{padding-left:0;padding-right:0;min-width:0;width:4em}#pane .paneContentDiv{border-bottom:.4em double var(--color-med)}#pane #changelogDiv{text-align:left}#pane #changelogDiv h3{text-align:left}#pane td.optionLabel{min-width:12em;word-wrap:break-word}#pane #endCredits{font-size:90%}.gateway{text-align:center}.gateway h1{text-align:center;color:rgb(210.1351351351,239.8648648649,230.1351351351)}.gateway h2{text-align:center;color:#ace3d1}.gateway h3{text-align:center;color:#ace3d1}.gateway h4{text-align:center;color:#ace3d1}.gateway .medDesc{color:rgb(152.9324324324,220.5675675676,198.4324324324)}.gateway .smallDesc,.gateway .smallDescAllowClicks{color:#ace3d1}.gatewayButton,.gateway button,button.gateway,button.newlyDiscovered{background-color:rgb(36.3243243243,107.6756756757,84.3243243243);border-color:#ace3d1;max-width:16em}.gatewayButton div,.gateway button div,button.gateway div,button.newlyDiscovered div{background-color:rgb(95.7297297297,201.2702702703,166.7297297297);-webkit-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);-moz-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297)}.gatewayButton:hover,.gateway button:hover,button.gateway:hover,button.newlyDiscovered:hover{-webkit-box-shadow:0px 0px 2px 2px #ace3d1;-moz-box-shadow:0px 0px 2px 2px #ace3d1;box-shadow:0px 0px 2px 2px #ace3d1}.gatewayButton:active,.gateway button:active,button.gateway:active,button.newlyDiscovered:active{background-color:rgb(17.027027027,50.472972973,39.527027027);color:rgb(95.7297297297,201.2702702703,166.7297297297);-webkit-box-shadow:0px 3px 7px 7px rgb(36.3243243243,107.6756756757,84.3243243243) inset;-moz-box-shadow:0px 3px 7px 7px rgb(36.3243243243,107.6756756757,84.3243243243) inset;box-shadow:0px 3px 7px 7px rgb(36.3243243243,107.6756756757,84.3243243243) inset}.gatewayButton:active .medDesc,.gateway button:active .medDesc,button.gateway:active .medDesc,button.newlyDiscovered:active .medDesc{color:rgb(133.8648648649,214.1351351351,187.8648648649)}.gatewayButton:active div,.gateway button:active div,button.gateway:active div,button.newlyDiscovered:active div{background-color:rgb(36.3243243243,107.6756756757,84.3243243243);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.gatewayButton.disabled,.gateway button.disabled,button.disabled.gateway,button.disabled.newlyDiscovered{background-color:rgb(17.027027027,50.472972973,39.527027027);color:rgb(49.1891891892,145.8108108108,114.1891891892);border-color:rgb(49.1891891892,145.8108108108,114.1891891892)}.gatewayButton.disabled .medDesc,.gateway button.disabled .medDesc,button.disabled.gateway .medDesc,button.disabled.newlyDiscovered .medDesc{color:rgb(55.6216216216,164.8783783784,129.1216216216)}.gatewayButton.disabled div,.gateway button.disabled div,button.disabled.gateway div,button.disabled.newlyDiscovered div{background-color:rgb(17.027027027,50.472972973,39.527027027);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.gatewayButton.respecMode,.gateway button.respecMode,button.respecMode.gateway,button.respecMode.newlyDiscovered{box-shadow:0 0 6px rgb(229.2027027027,246.2972972973,240.7027027027) inset;background-color:rgb(55.6216216216,164.8783783784,129.1216216216)}#pane.gateway{-webkit-border-radius:3em;-moz-border-radius:3em;border-radius:3em;background-color:rgb(36.3243243243,107.6756756757,84.3243243243);-webkit-box-shadow:0 0 2em 2em rgb(36.3243243243,107.6756756757,84.3243243243);-moz-box-shadow:0 0 2em 2em rgb(36.3243243243,107.6756756757,84.3243243243);box-shadow:0 0 2em 2em rgb(36.3243243243,107.6756756757,84.3243243243);border:none}#pane.gateway #paneHeaderEnd,#pane.gateway .paneContentDiv{border-bottom:none}#pane.gateway #treeCanvas{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:0 0 5px 5px #ace3d1;-moz-box-shadow:0 0 5px 5px #ace3d1;box-shadow:0 0 5px 5px #ace3d1;width:800px;height:600px;touch-action:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}#overlay.gateway{-webkit-opacity:1;-moz-opacity:1;opacity:1;background-color:rgb(17.027027027,50.472972973,39.527027027)}.gateway .essenceCount{color:rgb(95.7297297297,201.2702702703,166.7297297297);text-shadow:0 0 .6em rgb(95.7297297297,201.2702702703,166.7297297297)}.gateway .essenceCountBrighter{color:rgb(191.0675675676,233.4324324324,219.5675675676);text-shadow:0 0 .6em rgb(191.0675675676,233.4324324324,219.5675675676)}.gateway .numenCount{color:#fff;text-shadow:0 0 .3em #fff,0 0 .6em #fff,0 0 .8em #fff}.gatewayButtonList{list-style-type:none;display:inline-block}.gatewayButtonList button{display:inline-block;margin:.2em}.gatewayPropertyList{list-style-type:none;padding-left:0}.gatewayPropertyList li{padding-left:0}.gateway input{background-color:rgb(36.3243243243,107.6756756757,84.3243243243);border-color:#ace3d1;color:#fff;text-align:right;width:4em}.gateway ::-webkit-inner-spin-button{margin-left:2px}#planetContainer{text-align:center;margin:.5em auto;padding:.5em}.gateway ::selection{background-color:rgb(17.027027027,50.472972973,39.527027027)}.gateway ::-moz-selection{background-color:rgb(17.027027027,50.472972973,39.527027027)}#aspectList{margin:.5em auto}#aspectTable{border-spacing:0}#aspectTable tr:nth-child(6n+1) td,#aspectTable tr:nth-child(6n+2) td,#aspectTable tr:nth-child(6n+3) td{background-color:rgb(55.6216216216,164.8783783784,129.1216216216)}.aspectDiv{display:inline-block;vertical-align:middle;-webkit-border-radius:.5em;-moz-border-radius:.5em;border-radius:.5em;background-color:rgb(36.3243243243,107.6756756757,84.3243243243);-webkit-box-shadow:0 0 .5em .5em rgb(36.3243243243,107.6756756757,84.3243243243);-moz-box-shadow:0 0 .5em .5em rgb(36.3243243243,107.6756756757,84.3243243243);box-shadow:0 0 .5em .5em rgb(36.3243243243,107.6756756757,84.3243243243);padding:.2em;margin:1.5em;max-width:14em}.aspectDiv .gatewayButton,.aspectDiv button.newlyDiscovered,.aspectDiv .gateway button,.gateway .aspectDiv button,.aspectDiv button.gateway{-webkit-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);-moz-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297)}.disabledAspectDiv{display:inline-block;vertical-align:middle;-webkit-border-radius:.5em;-moz-border-radius:.5em;border-radius:.5em;background-color:rgb(17.027027027,50.472972973,39.527027027);-webkit-box-shadow:0 0 .5em .5em rgb(17.027027027,50.472972973,39.527027027);-moz-box-shadow:0 0 .5em .5em rgb(17.027027027,50.472972973,39.527027027);box-shadow:0 0 .5em .5em rgb(17.027027027,50.472972973,39.527027027);padding:.2em;margin:1.5em;max-width:14em}.disabledAspectDiv .gatewayButton,.disabledAspectDiv button.newlyDiscovered,.disabledAspectDiv .gateway button,.gateway .disabledAspectDiv button,.disabledAspectDiv button.gateway{-webkit-box-shadow:0 0 3px 3px rgb(55.6216216216,164.8783783784,129.1216216216);-moz-box-shadow:0 0 3px 3px rgb(55.6216216216,164.8783783784,129.1216216216);box-shadow:0 0 3px 3px rgb(55.6216216216,164.8783783784,129.1216216216)}.planetDisplay{-webkit-border-radius:50px;-moz-border-radius:50px;border-radius:50px;background-color:rgb(95.7297297297,201.2702702703,166.7297297297);-webkit-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);-moz-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);margin:0 auto}button.planetButton{background-color:rgba(0,0,0,0);border:none;padding:20px;max-width:14em;margin:.8em}button.planetButton div{-webkit-border-radius:50px;-moz-border-radius:50px;border-radius:50px}button.planetButton:hover{text-shadow:0 0 .3em rgb(191.0675675676,233.4324324324,219.5675675676),0 0 .6em rgb(210.1351351351,239.8648648649,230.1351351351),0 0 .9em rgb(229.2027027027,246.2972972973,240.7027027027);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}button.planetButton:hover div{-webkit-box-shadow:0 0 .4em .4em #ace3d1;-moz-box-shadow:0 0 .4em .4em #ace3d1;box-shadow:0 0 .4em .4em #ace3d1}button.planetButton:active{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#gatewayVoiceMessage{font-size:1.25em}.tooltip{display:block;background-color:var(--color-light);color:#fff;text-align:center;border-style:solid;border-color:var(--color-lighter);border-width:5px;border-radius:8px;padding-left:15px;padding-right:15px;padding-top:12px;padding-bottom:12px;min-width:200px;position:fixed;z-index:40;opacity:1;transition:opacity .3s;text-shadow:0px 0px 3px #000;font-size:1.2rem}.tooltip:empty{opacity:0;transition:opacity 0s}.tooltip .littleTooltipText{font-size:.6em}.tooltip.gives-consumer{box-shadow:0 0 3px 1px red inset}.forHomeButtonOrGrotto{width:250px}.forIncomeTable{width:auto}.forAspectTree{width:300px;background-color:rgb(23.4594594595,69.5405405405,54.4594594595);border-color:rgb(17.027027027,50.472972973,39.527027027)}.forAspectTreeUnpurchased{background-color:rgb(17.027027027,50.472972973,39.527027027);border-color:rgb(10.5945945946,31.4054054054,24.5945945946)}.forAspectTreeAffordable{background-color:rgb(36.3243243243,107.6756756757,84.3243243243);border-color:rgb(55.6216216216,164.8783783784,129.1216216216)}.hrForTooltipJuxtaposition{border:0;border-top:2px solid var(--color-lighter)}.hrForTooltipSeparation{border:0;border-top:2px dashed var(--color-lighter)}.hrForTooltipSeparationInGateway{border:0;border-top:2px dashed #fff}.hrForTooltipJuxtapositionInGateway{border:0;border-top:2px solid #fff}.collapser{padding-right:1em;padding-left:.7em}.disposeArrangement ul{display:inline-block}.disposeArrangement li{display:inline-block}.disposeArrangement button{display:inline-block;margin:.4em;max-width:12em;min-width:9em}.disposeArrangement button.newlyDiscovered{max-width:12em;min-width:9em}.disposeArrangement #buyButtons button{margin:0 2px 3px;min-width:0}#cheatsDisplay{width:50%}#leftButtons{float:left;width:50%}#leftButtons .up-down{display:flex;width:12em;margin:1% auto;overflow:hidden;font-size:90%}#leftButtons .up-down .up-downText{margin:auto}#leftButtons .up-down .up-downButtonContainer{float:right;max-width:1.5em}#rightButtons{float:right;width:50%}#rightButtons .up-down{display:flex;width:12em;margin:1% auto;overflow:hidden;font-size:90%}#rightButtons .up-down .up-downText{margin:auto}#rightButtons .up-down .up-downButtonContainer{float:right;max-width:1.5em}.token{margin:.5em 0 .5em .5em}#token-div{display:flex}#minute-hand-toggle{color:#fff;border-color:rgb(36.3243243243,107.6756756757,84.3243243243);background:rgb(17.027027027,50.472972973,39.527027027)}#minute-hand-toggle.disabled{text-shadow:none}#minute-hand-toggle.minuteOn{box-shadow:0 0 4px #ace3d1;border-color:rgb(55.6216216216,164.8783783784,129.1216216216);background:rgb(36.3243243243,107.6756756757,84.3243243243)}#minute-hand-toggle.minuteOn.power1{box-shadow:0 0 6px rgb(191.0675675676,233.4324324324,219.5675675676);border-color:rgb(55.6216216216,164.8783783784,129.1216216216);background:rgb(42.7567567568,126.7432432432,99.2567567568)}#minute-hand-toggle.minuteOn.power2{box-shadow:0 0 6px rgb(191.0675675676,233.4324324324,219.5675675676);border-color:rgb(55.6216216216,164.8783783784,129.1216216216);background:rgb(49.1891891892,145.8108108108,114.1891891892)}#minute-hand-toggle.minuteOn.power3{box-shadow:0 0 7px rgb(210.1351351351,239.8648648649,230.1351351351);border-color:rgb(95.7297297297,201.2702702703,166.7297297297);background:rgb(55.6216216216,164.8783783784,129.1216216216)}#minute-hand-toggle.minuteOn.power4{box-shadow:0 0 8px rgb(229.2027027027,246.2972972973,240.7027027027);border-color:#ace3d1;background:rgb(62.0540540541,183.9459459459,144.0540540541)}#minute-hand-toggle.minuteOn.power5{box-shadow:0 0 9px rgb(248.2702702703,252.7297297297,251.2702702703);border-color:rgb(229.2027027027,246.2972972973,240.7027027027);background:rgb(95.7297297297,201.2702702703,166.7297297297)}#minute-hand-toggle.disabled{border-color:rgb(17.027027027,50.472972973,39.527027027)}.minuteOn{color:#fff;text-shadow:0 0 .6em #fff}.minuteOff{color:#fff}.bigSpeedHeader{font-size:2em}.speedButtons{display:flex}.speedButtons button{margin:1em;width:6em;height:17em}#aspectInnerWarning{padding-top:1em;padding-bottom:1em}.reflectionText{color:#fff}#token-div{background-color:var(--color-light);box-shadow:0 1px 3px #fff}.reminderShadow{box-shadow:0 0 3em #fff}#minute-hand-div{display:flex;flex-direction:column;align-items:center;position:relative}#pause-toggle{margin-left:1em;color:#fff;border-color:rgb(36.3243243243,107.6756756757,84.3243243243);background:rgb(17.027027027,50.472972973,39.527027027)}#pause-toggle.on{box-shadow:0 0 6px rgb(191.0675675676,233.4324324324,219.5675675676);border-color:rgb(55.6216216216,164.8783783784,129.1216216216);background:rgb(49.1891891892,145.8108108108,114.1891891892)}#minute-slider{background:rgb(17.027027027,50.472972973,39.527027027);border-style:dashed;border-color:rgb(36.3243243243,107.6756756757,84.3243243243)}#minute-slider.power1{background:rgb(23.4594594595,69.5405405405,54.4594594595);border-color:rgb(42.7567567568,126.7432432432,99.2567567568);box-shadow:0 0 6px rgb(55.6216216216,164.8783783784,129.1216216216)}#minute-slider.power2{background:rgb(36.3243243243,107.6756756757,84.3243243243);border-color:rgb(55.6216216216,164.8783783784,129.1216216216);box-shadow:0 0 8px #ace3d1}#minute-slider.power3{background:rgb(55.6216216216,164.8783783784,129.1216216216);border-color:rgb(95.7297297297,201.2702702703,166.7297297297);box-shadow:0 0 10px #ace3d1}#minute-slider.power4{background:rgb(95.7297297297,201.2702702703,166.7297297297);border-color:#ace3d1;box-shadow:0 0 12px #ace3d1}#minute-slider.power5{background:#ace3d1;border-color:rgb(229.2027027027,246.2972972973,240.7027027027);box-shadow:0 0 15px #ace3d1}#minute-time{margin-bottom:1rem}#minute-time.noTime{color:#555}#minute-row-two{display:flex;flex-wrap:wrap}.front{z-index:30}.inGateway{visibility:hidden}.inGateway #overlay{visibility:visible}.can-afford-aspect{text-shadow:0 0 .6em #ace3d1}#visitButtons{margin:1em 0}#keybindTable td{padding:.2rem}#keybind-overlay-container{float:left;margin-left:1rem}select{background-color:var(--color-darker);color:inherit;border:none;outline:none;font-size:inherit;text-align:right;text-align-last:right}select .evenMessage{background-color:var(--color-dark)}option{direction:rtl}/*# sourceMappingURL=style.min.css.map */ +.fill-available-width,#sidebar #resourceTableContainer table{width:100%;width:fill-available;width:-moz-available;width:-webkit-fill-available}.clear-fix{display:block;zoom:1}.clear-fix:after{content:" ";display:block;font-size:0;height:0;clear:both;visibility:hidden}.bold{font-weight:bold}:root{--color-lighter: #8e9fc0;--color-light: #536892;--color-med: #2e4372;--color-dark: #152a55;--color-darker: #061639;--color-title: rgba(46, 67, 114, 0.2)}:root :not(.no-theme).abandoned{--color-lighter: #7e798f;--color-light: #454152;--color-med: #1f1b2c;--color-dark: #171226;--color-darker: #0a0514;--color-title: rgba(31, 27, 44, 0.2)}:root :not(.no-theme).chaotic{--color-lighter: #a2b3ae;--color-light: #69877d;--color-med: #45695d;--color-dark: #26453b;--color-darker: #113a2d;--color-title: rgba(69, 105, 93, 0.2)}:root :not(.no-theme).frigid{--color-lighter: #c0cdd4;--color-light: #5d829b;--color-med: #2f5d7c;--color-dark: #14415f;--color-darker: #05283f;--color-title: rgba(47, 93, 124, 0.2)}:root :not(.no-theme).haven{--color-lighter: #75aab6;--color-light: #2f7591;--color-med: #1d5372;--color-dark: #053247;--color-darker: #001d2b;--color-title: rgba(29, 83, 114, 0.2)}:root :not(.no-theme).shore{--color-lighter: #ffdf80;--color-light: #ffd24d;--color-med: #ffbf00;--color-dark: #cc9900;--color-darker: #997300;--color-title: rgba(255, 191, 0, 0.2)}:root :not(.no-theme).shrouded{--color-lighter: #22bec3;--color-light: #302d39;--color-med: #121019;--color-dark: #0f0b18;--color-darker: #0a0613;--color-title: rgba(18, 16, 25, 0.2)}:root :not(.no-theme).tempestuous{--color-lighter: #858d9e;--color-light: #5e687e;--color-med: #3e4960;--color-dark: #253046;--color-darker: #121a2b;--color-title: rgba(62, 73, 96, 0.2)}:root :not(.no-theme).volcanic{--color-lighter: #cf9d9d;--color-light: #8f5252;--color-med: #681e1e;--color-dark: #521212;--color-darker: #2b0707;--color-title: rgba(104, 30, 30, 0.2)}html{min-height:100%}body{color:#fff;background-color:var(--color-darker);font-family:Verdana,Geneva,sans-serif;font-size:13pt;text-align:center;min-height:100%;overflow-y:auto}::-webkit-scrollbar{width:initial}::-webkit-scrollbar-track{background:var(--color-med)}.gateway::-webkit-scrollbar-track{background:rgb(55.6216216216,164.8783783784,129.1216216216)}::-webkit-scrollbar-thumb{background-color:var(--color-light)}.gateway::-webkit-scrollbar-thumb{background-color:rgb(95.7297297297,201.2702702703,166.7297297297)}div{padding:0;margin:0}a:active,a:hover,a:visited,a:link{color:var(--color-lighter)}a:hover{filter:brightness(125%)}a:active{filter:brightness(135%)}h1{color:var(--color-lighter);filter:brightness(130%);font-size:2em;text-shadow:0 0 .3em var(--color-darker)}h2{color:var(--color-lighter);font-size:1.3em;text-shadow:0 0 .3em var(--color-darker)}h3{color:var(--color-lighter);font-size:1.1em;text-align:center;text-shadow:0 0 .3em var(--color-darker)}h4{color:var(--color-lighter);font-size:.8em;text-align:center;text-shadow:0 0 .3em var(--color-darker)}#shareWrapper{margin-left:auto;margin-right:auto;display:inline-block;text-align:center;margin-top:.8em;margin-bottom:.2em;background:var(--color-med);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 2px 2px var(--color-med);-moz-box-shadow:0 0 2px 2px var(--color-med);box-shadow:0 0 2px 2px var(--color-med)}#wrapper{background-color:var(--color-dark);margin-left:auto;margin-right:auto;margin-top:2.5em;padding:10px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;height:100%;min-height:90vh;display:flex;flex-direction:column}#wrapper #game{flex:1 0 auto}#wrapper #devs{align-items:center;display:flex;flex-direction:column}#wrapper #devs>ul{margin:0;padding:0;list-style-type:none}#wrapper #devs tr{text-align:right}#wrapper #devs tr td{padding-left:1rem;padding-right:1rem;width:50%}#wrapper #devs tr td:nth-child(2){text-align:left}#wrapper #copyright{flex-shrink:0}#wrapper.topLogActive{margin-top:4.8em}#wrapper.notMinimized{margin-top:0}pre{text-align:left}#game{display:none}.section,#content,#sidebar,#title{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:5px;overflow:hidden}.inner-section,#statsContainer,#buttonList,#tabMessage{padding:5px;margin:5px}.click-passthrough,.largeDesc,.medDesc,.smallDesc,.smallDescAllowClicks,#tabSceneTracker,.button-icon,.top-bar #title #titlebar,.top-bar #title{pointer-events:none}#title{clear:both;text-shadow:2px 2px 3px var(--color-darker);margin-bottom:1em;box-shadow:0 4px 4px 4px var(--color-darker);background-image:url("../img/sharklogo.png");background-position:center;background-repeat:no-repeat}#title.radical{background-image:url("../img/sharklogo_radical.png")}#title h1{margin:.1em auto .3em auto}#title h2{text-align:left;margin:.2em}#title h4{margin:.2em auto 1.5em}.top-bar{margin-top:35px}.top-bar #title{padding:0;width:100%;height:4.3em;position:fixed;background-image:none;font-size:initial;left:0;top:0;box-shadow:none;margin-bottom:0;z-index:2;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.top-bar #title.biggerTitleDiv{height:13em}.top-bar #title #titlebar{width:100%}.top-bar #title #gameName,.top-bar #title #versionNumber,.top-bar #title #updateGame{display:none;pointer-events:all}.top-bar #title #titlemenu,.top-bar #title #subtitlemenu{pointer-events:all;float:left;font-size:initial;height:auto;margin:.2em .8em;overflow:hidden;text-align:center;font-weight:bold}.top-bar #title #titlemenu a:link,.top-bar #title #titlemenu a:visited,.top-bar #title #subtitlemenu a:link,.top-bar #title #subtitlemenu a:visited{color:var(--color-lighter);filter:none}.top-bar #title #titlemenu a:hover,.top-bar #title #subtitlemenu a:hover{filter:brightness(130%)}.top-bar #title #subtitlemenu{float:right}.top-bar #title li{font-size:initial;pointer-events:all}.top-bar #title #log{pointer-events:all}.top-bar #title #titlebackground{display:block}#titlebackground{height:2em;display:none;background-color:var(--color-med);position:fixed;width:100%;z-index:-1;box-shadow:0 4px 4px 4px var(--color-darker)}#titlebackground.topLogActive{height:4.3em}#titlebar{height:auto;margin:0 auto;overflow:hidden;text-align:center;font-weight:bold;color:var(--color-lighter);font-size:1.3em}#titlebar ul{padding:.2em 0;margin:.4em auto .6em auto}#titlemenu a:link,#titlemenu a:visited{color:var(--color-lighter);filter:brightness(125%)}#titlemenu a:hover{color:var(--color-lighter);filter:brightness(130%)}#titlemenu li{padding:0;margin:0;list-style-type:none;display:inline}#titlemenu li:before{content:" | "}#titlemenu li:first-child:before{content:none}#subtitlemenu{font-size:.8em}#subtitlemenu li{padding:0;margin:0;list-style-type:none;display:inline}#subtitlemenu li:before{content:" | "}#subtitlemenu li:first-child:before{content:none}#contentMenu{overflow:hidden;min-height:1.8em}#contentMenu ul{padding:0;margin:0}#contentMenu li{padding:0;margin:0;list-style-type:none;display:inline}#contentMenu #tabList{float:left;position:fixed;margin-bottom:.4em;margin-left:1em;box-shadow:0 0 10px 10px var(--color-dark);background-color:var(--color-dark);z-index:1}#contentMenu #tabList li{font-weight:bold;list-style-type:none;display:inline}#contentMenu #tabList li:before{content:" | "}#contentMenu #tabList li:first-child:before{content:none}#contentMenu #tabList:empty{box-shadow:none}#contentMenu #tabList.notFixed{position:static}#contentMenu #tabList .newTab a:link{color:#ace3d1;text-shadow:0 0 .8em rgb(95.7297297297,201.2702702703,166.7297297297)}#contentMenu #tabList .newTab a:visited{color:#ace3d1;text-shadow:0 0 .8em rgb(95.7297297297,201.2702702703,166.7297297297)}#contentMenu #tabList .newTab a:hover{color:rgb(210.1351351351,239.8648648649,230.1351351351);text-shadow:0 0 .8em rgb(133.8648648649,214.1351351351,187.8648648649)}#contentMenu #tabList .newTab a:active{color:rgb(210.1351351351,239.8648648649,230.1351351351);text-shadow:0 0 .8em rgb(133.8648648649,214.1351351351,187.8648648649)}#buyButtons{padding-left:0px}#buyButtons li{padding:0;margin:0;list-style-type:none;display:inline}#sidebar{float:left;text-align:left;width:25%;background-color:var(--color-med);text-shadow:0px 0px 2px #000;-webkit-box-shadow:0 0 5px 5px var(--color-dark) inset;-moz-box-shadow:0 0 5px 5px var(--color-dark) inset;box-shadow:0 0 5px 5px var(--color-dark) inset}#sidebar #resourceTableContainer{margin:0}#sidebar #resourceTableContainer table{margin:0;background-color:var(--color-darker);border:1px solid var(--color-lighter);padding:.5em;overflow:hidden;text-align:left;border-spacing:0 .1em}#sidebar #resourceTableContainer table .highlightedIncome{background-color:var(--color-light)}#sidebar #resourceTableContainer table .highlightedResource{background-color:var(--color-light)}#sidebar #resourceTableContainer table h3{padding:.2em;width:auto;margin:auto;font-size:.9em;color:var(--color-lighter),20%;filter:brightness(120%);border-top:.1em dashed var(--color-lighter);border-bottom:.1em dashed var(--color-lighter);background:var(--color-dark);cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#sidebar td{font-size:1.1em;padding:.1em;word-break:break-all;word-wrap:break-word;background-repeat:no-repeat;background-position:right}#sidebar ul{list-style-type:none;padding:0;margin:0}#sidebar li{padding:.5em;margin:0}#status{margin:5px;padding:0}#log{overflow:hidden;overflow-anchor:none;position:relative}#log li{display:block;padding-top:.1em;padding-bottom:.1em}#log h3{display:block;text-align:center}#log .error{color:#e03030;text-shadow:0 0 .8em maroon}#log .discovery{color:#ace3d1;text-shadow:0 0 .8em rgb(95.7297297297,201.2702702703,166.7297297297)}#log #messageList{box-sizing:border-box;text-align:center;padding:0;overflow-y:hidden;max-height:9em;margin-top:0;margin-bottom:0;border-style:solid;border-width:2px;background-color:var(--color-med);-webkit-box-shadow:0 0 2px 2px var(--color-dark) inset;-moz-box-shadow:0 0 2px 2px var(--color-dark) inset;box-shadow:0 0 2px 2px var(--color-dark) inset}#log #messageList.scrollable{overflow-y:auto}#log #messageList.forRightSide{overflow-y:auto;border-style:none;max-height:39em}#log #messageList.forRightSide li{padding-top:1em;padding-bottom:1em;padding-left:.4em;padding-right:.4em}#log #messageList.forLeftSide{overflow-y:auto;border-style:none;max-height:30em}#log #messageList.forLeftSide li{padding-top:1em;padding-bottom:1em;padding-left:.4em;padding-right:.4em}#log #messageList .evenMessage{background-color:var(--color-dark)}#rightLogContainer{float:right;width:18%;background-color:var(--color-med);box-shadow:0 0 5px 5px var(--color-dark) inset;overflow:clip}#resource-numen{text-shadow:0 0 .3em #fff,0 0 .6em #fff,0 0 .8em #fff}#content{background-color:var(--color-med);-webkit-box-shadow:0 0 5px 5px var(--color-dark) inset;-moz-box-shadow:0 0 5px 5px var(--color-dark) inset;box-shadow:0 0 5px 5px var(--color-dark) inset;padding:.5em}#content #helpButton{padding:2px 5px 2px 5px}#tabMessage{position:relative;padding:1.4em;background:repeat-x center;-webkit-border-radius:.5em;-moz-border-radius:.5em;border-radius:.5em;-webkit-box-shadow:0 0 30px 30px var(--color-med) inset;-moz-box-shadow:0 0 30px 30px var(--color-med) inset;box-shadow:0 0 30px 30px var(--color-med) inset;text-shadow:0 0 .3em var(--color-dark)}#extraMessage{display:inline-block;width:400px}#buttonList{padding:1em}#buttonList button{touch-action:manipulation}#buttonList.homeScreen{display:flex;flex-wrap:wrap;justify-content:center}#buttonList.homeScreen ul{display:inline-block}#buttonList.homeScreen li{display:inline-block}#buttonList.homeScreen button{display:inline-block;margin:.4em;height:10em;width:12em}#buttonList.lab{width:100%}#buttonList.lab button{width:100%}button.newlyDiscovered{max-width:none}#homeTabs{margin-bottom:1em}#homeTabs ul{padding:0;margin:0}#homeTabs li{list-style-type:none;display:inline}#homeTabs li:before{content:" | "}#homeTabs li:first-child:before{content:none}#homeTabs .newItemAdded a:link{color:#ace3d1;text-shadow:0 0 .8em rgb(95.7297297297,201.2702702703,166.7297297297)}#homeTabs .newItemAdded a:visited{color:#ace3d1;text-shadow:0 0 .8em rgb(95.7297297297,201.2702702703,166.7297297297)}#homeTabs .newItemAdded a:hover{color:rgb(210.1351351351,239.8648648649,230.1351351351);text-shadow:0 0 .8em rgb(133.8648648649,214.1351351351,187.8648648649)}#homeTabs .newItemAdded a:active{color:rgb(210.1351351351,239.8648648649,230.1351351351);text-shadow:0 0 .8em rgb(133.8648648649,214.1351351351,187.8648648649)}#buttonLeftContainer{float:left;width:50%}#statsContainer{padding:1em}.statsInnerContainer table,#statsRightContainer table,#statsLeftContainer table,#statsUpperContainer table{text-align:left;margin-left:auto;margin-right:auto;padding:.1em;border:2px solid var(--color-lighter);border-collapse:collapse;background:var(--color-darker)}.statsInnerContainer td,#statsRightContainer td,#statsLeftContainer td,#statsUpperContainer td{margin:.2em;font-size:.9em;padding:.4em}#statsUpperContainer{width:100%}#statsLeftContainer{float:left;width:50%}#statsRightContainer{float:right;width:45%}#incomeData{padding:.1em .1em 1em;border-bottom:.1em dashed var(--color-lighter);text-shadow:0px 0px 2px #000}#incomeData .oddRow{background:var(--color-darker)}#incomeData .evenRow{background:var(--color-dark)}#incomeData .essenceGlow{text-shadow:0 0 1em #ace3d1;background:var(--color-dark)}#generalStats .timeDisplay{font-style:italic;font-size:110%}#disposeResource{padding:.1em .1em .5em;border-bottom:.1em dashed var(--color-lighter)}#upgradeList{float:right;text-align:left;margin:auto;width:40%;padding:.2em .2em .2em 2em;border-left:.1em dashed var(--color-lighter);text-shadow:0px 0px 2px #000}#upgradeList ul{list-style-type:square;padding:0;margin:0;max-height:600pt;overflow-y:auto}#upgradeList li{padding:.5em .5em .5em .2em;margin:0}#recyclerContainer{margin:0 auto;overflow:hidden;max-width:55em}#recyclerContainer>#inputButtons{float:left;margin:auto;width:35%;text-shadow:0px 0px 2px #000}#recyclerContainer>#junkDisplay{position:relative;float:left;margin:auto;width:25%;background:#450808 url("../img/recyclerbg.png") center;color:hsl(0,22.7642276423%,78.2352941176%);border:.2em solid #975f5f;-webkit-box-shadow:0 0 15px 15px #450808 inset;-moz-box-shadow:0 0 15px 15px #450808 inset;box-shadow:0 0 15px 15px #450808 inset;padding:.5em;text-shadow:0px 0px 2px #000}#recyclerContainer>#outputButtons{float:left;margin:auto;width:35%;text-shadow:0px 0px 2px #000}#recyclerContainer #buyButtons{padding-left:0px}#updateGameBox{bottom:15px;right:15px;cursor:pointer}#updateGameBox:empty{display:none}button{background-color:var(--color-light);color:#fff;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;border:2px solid var(--color-lighter);padding:10px;margin:1% auto;cursor:pointer;display:block;min-width:12em;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-shadow:0px 0px 2px #000;font-size:100%}button.min{padding:.1em;margin:0px 2px 3px;min-width:0;display:inline;border-radius:5px}button.min-block{padding:.1em;margin:auto;min-width:0;vertical-align:super;border-radius:5px}button.close-button{padding:0 3.5px;margin:auto;float:right}button:hover{-webkit-box-shadow:0px 0px 2px 2px var(--color-lighter);-moz-box-shadow:0px 0px 2px 2px var(--color-lighter);box-shadow:0px 0px 2px 2px var(--color-lighter)}button:active,button.keep-button-pressed{background-color:var(--color-dark);color:var(--color-light);-webkit-box-shadow:0px 3px 7px 7px var(--color-darker) inset;-moz-box-shadow:0px 3px 7px 7px var(--color-darker) inset;box-shadow:0px 3px 7px 7px var(--color-darker) inset}button:active .medDesc,button.keep-button-pressed .medDesc{font-size:80%;color:var(--color-lighter);filter:brightness(80%)}button:active div,button.keep-button-pressed div{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:var(--color-dark)}button:focus{outline:0}button.disabled{background-color:var(--color-darker);color:var(--color-lighter);filter:brightness(80%);cursor:default;border-color:var(--color-med)}button.disabled:hover{box-shadow:none}button.disabled:active{box-shadow:none}button.disabled .medDesc{font-size:80%;color:var(--color-lighter);filter:brightness(75%)}button.disabled div{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:var(--color-darker)}#custom-input{padding:.1em;margin:0px 2px 3px;width:6em;background-color:var(--color-light);border-color:var(--color-lighter);color:#fff;font-size:90%}#custom-input[disabled]{background-color:var(--color-darker);color:var(--color-lighter);filter:brightness(80%);cursor:default;border-color:var(--color-med)}.button-icon{background-color:var(--color-lighter);display:block;margin:0 auto .4em auto;-webkit-box-shadow:0 0 3px 3px var(--color-lighter);-moz-box-shadow:0 0 3px 3px var(--color-lighter);box-shadow:0 0 3px 3px var(--color-lighter);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.gives-consumer{box-shadow:0 0 3px 1px red inset}#tabSceneTracker{position:absolute;width:100%;top:0;left:0;display:flex;justify-content:center}#tabSceneTracker .inactive{color:var(--color-dark)}#tabSceneDiv{display:flex}#tabSceneImage,#tabSceneImageEssence,#tabSceneImageRed{display:block;margin:.1em auto .4em auto;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 0 5px 5px var(--color-dark);-moz-box-shadow:0 0 5px 5px var(--color-dark);box-shadow:0 0 5px 5px var(--color-dark)}#tabSceneImageRed{-webkit-box-shadow:0 0 5px 5px #5c1919;-moz-box-shadow:0 0 5px 5px #5c1919;box-shadow:0 0 5px 5px #5c1919}#tabSceneImageEssence{-webkit-box-shadow:0 0 5px 5px rgb(62.0540540541,183.9459459459,144.0540540541);-moz-box-shadow:0 0 5px 5px rgb(62.0540540541,183.9459459459,144.0540540541);box-shadow:0 0 5px 5px rgb(62.0540540541,183.9459459459,144.0540540541)}#sceneLeft,#sceneRight{min-width:0}#overlay{-webkit-opacity:.5;-moz-opacity:.5;opacity:.5;position:fixed;top:0;left:0;background-color:#000;width:100%;height:100%;z-index:10}#idle-overlay{-webkit-opacity:.8;-moz-opacity:.8;opacity:.8;position:fixed;top:0;left:0;background-color:#000;width:100%;height:100%;z-index:20;display:flex;justify-content:center;align-items:center;flex-direction:column}.pointy{cursor:pointer}.littleGeneralText{font-size:10pt}.smallDesc,.smallDescAllowClicks{font-size:80%;color:var(--color-lighter)}.smallDescAllowClicks{pointer-events:auto}.medDesc{font-size:80%;color:var(--color-lighter);filter:brightness(130%)}.largeDesc{font-size:125%;color:var(--color-lighter);filter:brightness(130%)}.copyrightNotice{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:80%;color:var(--color-lighter);filter:brightness(130%);position:static}#pane{background-color:var(--color-dark);-webkit-box-shadow:0 0 5px 5px var(--color-darker) inset;-moz-box-shadow:0 0 5px 5px var(--color-darker) inset;box-shadow:0 0 5px 5px var(--color-darker) inset;filter:brightness(98%);-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:1em 2em;margin:auto;overflow:auto;position:fixed;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-moz-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);-o-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);border:double var(--color-med);max-height:90%;max-width:90%;z-index:11}#pane h2{padding-bottom:.5em}#pane #paneHeaderEnd{border-bottom:.5em double var(--color-med)}#pane #paneHeaderTitleDiv{vertical-align:middle;display:inline;text-align:left}#pane #paneHeaderTitleDiv h3{display:inline}#pane #paneHeaderCloseButtonDiv{vertical-align:middle;text-align:right}#pane table{margin:auto;text-align:left}#pane .option-button{padding-left:0;padding-right:0;min-width:0;width:4em}#pane .paneContentDiv{border-bottom:.4em double var(--color-med)}#pane #changelogDiv{text-align:left}#pane #changelogDiv h3{text-align:left}#pane td.optionLabel{min-width:12em;word-wrap:break-word}#pane #endCredits{font-size:90%}.gateway{text-align:center}.gateway h1{text-align:center;color:rgb(210.1351351351,239.8648648649,230.1351351351)}.gateway h2{text-align:center;color:#ace3d1}.gateway h3{text-align:center;color:#ace3d1}.gateway h4{text-align:center;color:#ace3d1}.gateway .medDesc{color:rgb(152.9324324324,220.5675675676,198.4324324324)}.gateway .smallDesc,.gateway .smallDescAllowClicks{color:#ace3d1}.gatewayButton,.gateway button,button.gateway,button.newlyDiscovered{background-color:rgb(36.3243243243,107.6756756757,84.3243243243);border-color:#ace3d1;max-width:16em}.gatewayButton div,.gateway button div,button.gateway div,button.newlyDiscovered div{background-color:rgb(95.7297297297,201.2702702703,166.7297297297);-webkit-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);-moz-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297)}.gatewayButton:hover,.gateway button:hover,button.gateway:hover,button.newlyDiscovered:hover{-webkit-box-shadow:0px 0px 2px 2px #ace3d1;-moz-box-shadow:0px 0px 2px 2px #ace3d1;box-shadow:0px 0px 2px 2px #ace3d1}.gatewayButton:active,.gateway button:active,button.gateway:active,button.newlyDiscovered:active{background-color:rgb(17.027027027,50.472972973,39.527027027);color:rgb(95.7297297297,201.2702702703,166.7297297297);-webkit-box-shadow:0px 3px 7px 7px rgb(36.3243243243,107.6756756757,84.3243243243) inset;-moz-box-shadow:0px 3px 7px 7px rgb(36.3243243243,107.6756756757,84.3243243243) inset;box-shadow:0px 3px 7px 7px rgb(36.3243243243,107.6756756757,84.3243243243) inset}.gatewayButton:active .medDesc,.gateway button:active .medDesc,button.gateway:active .medDesc,button.newlyDiscovered:active .medDesc{color:rgb(133.8648648649,214.1351351351,187.8648648649)}.gatewayButton:active div,.gateway button:active div,button.gateway:active div,button.newlyDiscovered:active div{background-color:rgb(36.3243243243,107.6756756757,84.3243243243);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.gatewayButton.disabled,.gateway button.disabled,button.disabled.gateway,button.disabled.newlyDiscovered{background-color:rgb(17.027027027,50.472972973,39.527027027);color:rgb(49.1891891892,145.8108108108,114.1891891892);border-color:rgb(49.1891891892,145.8108108108,114.1891891892)}.gatewayButton.disabled .medDesc,.gateway button.disabled .medDesc,button.disabled.gateway .medDesc,button.disabled.newlyDiscovered .medDesc{color:rgb(55.6216216216,164.8783783784,129.1216216216)}.gatewayButton.disabled div,.gateway button.disabled div,button.disabled.gateway div,button.disabled.newlyDiscovered div{background-color:rgb(17.027027027,50.472972973,39.527027027);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.gatewayButton.respecMode,.gateway button.respecMode,button.respecMode.gateway,button.respecMode.newlyDiscovered{box-shadow:0 0 6px rgb(229.2027027027,246.2972972973,240.7027027027) inset;background-color:rgb(55.6216216216,164.8783783784,129.1216216216)}#pane.gateway{-webkit-border-radius:3em;-moz-border-radius:3em;border-radius:3em;background-color:rgb(36.3243243243,107.6756756757,84.3243243243);-webkit-box-shadow:0 0 2em 2em rgb(36.3243243243,107.6756756757,84.3243243243);-moz-box-shadow:0 0 2em 2em rgb(36.3243243243,107.6756756757,84.3243243243);box-shadow:0 0 2em 2em rgb(36.3243243243,107.6756756757,84.3243243243);border:none}#pane.gateway #paneHeaderEnd,#pane.gateway .paneContentDiv{border-bottom:none}#pane.gateway #treeCanvas{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:0 0 5px 5px #ace3d1;-moz-box-shadow:0 0 5px 5px #ace3d1;box-shadow:0 0 5px 5px #ace3d1;width:800px;height:600px;touch-action:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}#overlay.gateway{-webkit-opacity:1;-moz-opacity:1;opacity:1;background-color:rgb(17.027027027,50.472972973,39.527027027)}.gateway .essenceCount{color:rgb(95.7297297297,201.2702702703,166.7297297297);text-shadow:0 0 .6em rgb(95.7297297297,201.2702702703,166.7297297297)}.gateway .essenceCountBrighter{color:rgb(191.0675675676,233.4324324324,219.5675675676);text-shadow:0 0 .6em rgb(191.0675675676,233.4324324324,219.5675675676)}.gateway .numenCount{color:#fff;text-shadow:0 0 .3em #fff,0 0 .6em #fff,0 0 .8em #fff}.gatewayButtonList{list-style-type:none;display:inline-block}.gatewayButtonList button{display:inline-block;margin:.2em}.gatewayPropertyList{list-style-type:none;padding-left:0}.gatewayPropertyList li{padding-left:0}.gateway input{background-color:rgb(36.3243243243,107.6756756757,84.3243243243);border-color:#ace3d1;color:#fff;text-align:right;width:4em}.gateway ::-webkit-inner-spin-button{margin-left:2px}#planetContainer{text-align:center;margin:.5em auto;padding:.5em}.gateway ::selection{background-color:rgb(17.027027027,50.472972973,39.527027027)}.gateway ::-moz-selection{background-color:rgb(17.027027027,50.472972973,39.527027027)}#aspectList{margin:.5em auto}#aspectTable{border-spacing:0}#aspectTable tr:nth-child(6n+1) td,#aspectTable tr:nth-child(6n+2) td,#aspectTable tr:nth-child(6n+3) td{background-color:rgb(55.6216216216,164.8783783784,129.1216216216)}.aspectDiv{display:inline-block;vertical-align:middle;-webkit-border-radius:.5em;-moz-border-radius:.5em;border-radius:.5em;background-color:rgb(36.3243243243,107.6756756757,84.3243243243);-webkit-box-shadow:0 0 .5em .5em rgb(36.3243243243,107.6756756757,84.3243243243);-moz-box-shadow:0 0 .5em .5em rgb(36.3243243243,107.6756756757,84.3243243243);box-shadow:0 0 .5em .5em rgb(36.3243243243,107.6756756757,84.3243243243);padding:.2em;margin:1.5em;max-width:14em}.aspectDiv .gatewayButton,.aspectDiv button.newlyDiscovered,.aspectDiv .gateway button,.gateway .aspectDiv button,.aspectDiv button.gateway{-webkit-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);-moz-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297)}.disabledAspectDiv{display:inline-block;vertical-align:middle;-webkit-border-radius:.5em;-moz-border-radius:.5em;border-radius:.5em;background-color:rgb(17.027027027,50.472972973,39.527027027);-webkit-box-shadow:0 0 .5em .5em rgb(17.027027027,50.472972973,39.527027027);-moz-box-shadow:0 0 .5em .5em rgb(17.027027027,50.472972973,39.527027027);box-shadow:0 0 .5em .5em rgb(17.027027027,50.472972973,39.527027027);padding:.2em;margin:1.5em;max-width:14em}.disabledAspectDiv .gatewayButton,.disabledAspectDiv button.newlyDiscovered,.disabledAspectDiv .gateway button,.gateway .disabledAspectDiv button,.disabledAspectDiv button.gateway{-webkit-box-shadow:0 0 3px 3px rgb(55.6216216216,164.8783783784,129.1216216216);-moz-box-shadow:0 0 3px 3px rgb(55.6216216216,164.8783783784,129.1216216216);box-shadow:0 0 3px 3px rgb(55.6216216216,164.8783783784,129.1216216216)}.planetDisplay{-webkit-border-radius:50px;-moz-border-radius:50px;border-radius:50px;background-color:rgb(95.7297297297,201.2702702703,166.7297297297);-webkit-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);-moz-box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);box-shadow:0 0 3px 3px rgb(95.7297297297,201.2702702703,166.7297297297);margin:0 auto}button.planetButton{background-color:rgba(0,0,0,0);border:none;padding:20px;max-width:14em;margin:.8em}button.planetButton div{-webkit-border-radius:50px;-moz-border-radius:50px;border-radius:50px}button.planetButton:hover{text-shadow:0 0 .3em rgb(191.0675675676,233.4324324324,219.5675675676),0 0 .6em rgb(210.1351351351,239.8648648649,230.1351351351),0 0 .9em rgb(229.2027027027,246.2972972973,240.7027027027);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}button.planetButton:hover div{-webkit-box-shadow:0 0 .4em .4em #ace3d1;-moz-box-shadow:0 0 .4em .4em #ace3d1;box-shadow:0 0 .4em .4em #ace3d1}button.planetButton:active{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#gatewayVoiceMessage{font-size:1.25em}.tooltip{display:block;background-color:var(--color-light);color:#fff;text-align:center;border-style:solid;border-color:var(--color-lighter);border-width:5px;border-radius:8px;padding-left:15px;padding-right:15px;padding-top:12px;padding-bottom:12px;min-width:200px;position:fixed;z-index:40;opacity:1;transition:opacity .3s;text-shadow:0px 0px 3px #000;font-size:1.2rem}.tooltip:empty{opacity:0;transition:opacity 0s}.tooltip .littleTooltipText{font-size:.6em}.tooltip.gives-consumer{box-shadow:0 0 3px 1px red inset}.forHomeButtonOrGrotto{width:250px}.forIncomeTable{width:auto}.forAspectTree{width:300px;background-color:rgb(23.4594594595,69.5405405405,54.4594594595);border-color:rgb(17.027027027,50.472972973,39.527027027)}.forAspectTreeUnpurchased{background-color:rgb(17.027027027,50.472972973,39.527027027);border-color:rgb(10.5945945946,31.4054054054,24.5945945946)}.forAspectTreeAffordable{background-color:rgb(36.3243243243,107.6756756757,84.3243243243);border-color:rgb(55.6216216216,164.8783783784,129.1216216216)}.hrForTooltipJuxtaposition{border:0;border-top:2px solid var(--color-lighter)}.hrForTooltipSeparation{border:0;border-top:2px dashed var(--color-lighter)}.hrForTooltipSeparationInGateway{border:0;border-top:2px dashed #fff}.hrForTooltipJuxtapositionInGateway{border:0;border-top:2px solid #fff}.collapser{padding-right:1em;padding-left:.7em}.disposeArrangement ul{display:inline-block}.disposeArrangement li{display:inline-block}.disposeArrangement button{display:inline-block;margin:.4em;max-width:12em;min-width:9em}.disposeArrangement button.newlyDiscovered{max-width:12em;min-width:9em}.disposeArrangement #buyButtons button{margin:0 2px 3px;min-width:0}#cheatsDisplay{width:50%}#leftButtons{float:left;width:50%}#leftButtons .up-down{display:flex;width:12em;margin:1% auto;overflow:hidden;font-size:90%}#leftButtons .up-down .up-downText{margin:auto}#leftButtons .up-down .up-downButtonContainer{float:right;max-width:1.5em}#rightButtons{float:right;width:50%}#rightButtons .up-down{display:flex;width:12em;margin:1% auto;overflow:hidden;font-size:90%}#rightButtons .up-down .up-downText{margin:auto}#rightButtons .up-down .up-downButtonContainer{float:right;max-width:1.5em}.token{margin:.5em 0 .5em .5em}#token-div{display:flex}#minute-hand-toggle{color:#fff;border-color:rgb(36.3243243243,107.6756756757,84.3243243243);background:rgb(17.027027027,50.472972973,39.527027027)}#minute-hand-toggle.disabled{text-shadow:none}#minute-hand-toggle.minuteOn{box-shadow:0 0 4px #ace3d1;border-color:rgb(55.6216216216,164.8783783784,129.1216216216);background:rgb(36.3243243243,107.6756756757,84.3243243243)}#minute-hand-toggle.minuteOn.power1{box-shadow:0 0 6px rgb(191.0675675676,233.4324324324,219.5675675676);border-color:rgb(55.6216216216,164.8783783784,129.1216216216);background:rgb(42.7567567568,126.7432432432,99.2567567568)}#minute-hand-toggle.minuteOn.power2{box-shadow:0 0 6px rgb(191.0675675676,233.4324324324,219.5675675676);border-color:rgb(55.6216216216,164.8783783784,129.1216216216);background:rgb(49.1891891892,145.8108108108,114.1891891892)}#minute-hand-toggle.minuteOn.power3{box-shadow:0 0 7px rgb(210.1351351351,239.8648648649,230.1351351351);border-color:rgb(95.7297297297,201.2702702703,166.7297297297);background:rgb(55.6216216216,164.8783783784,129.1216216216)}#minute-hand-toggle.minuteOn.power4{box-shadow:0 0 8px rgb(229.2027027027,246.2972972973,240.7027027027);border-color:#ace3d1;background:rgb(62.0540540541,183.9459459459,144.0540540541)}#minute-hand-toggle.minuteOn.power5{box-shadow:0 0 9px rgb(248.2702702703,252.7297297297,251.2702702703);border-color:rgb(229.2027027027,246.2972972973,240.7027027027);background:rgb(95.7297297297,201.2702702703,166.7297297297)}#minute-hand-toggle.disabled{border-color:rgb(17.027027027,50.472972973,39.527027027)}.minuteOn{color:#fff;text-shadow:0 0 .6em #fff}.minuteOff{color:#fff}.bigSpeedHeader{font-size:2em}.speedButtons{display:flex}.speedButtons button{margin:1em;width:6em;height:17em}#aspectInnerWarning{padding-top:1em;padding-bottom:1em}.reflectionText{color:#fff}#token-div{background-color:var(--color-light);box-shadow:0 1px 3px #fff}.reminderShadow{box-shadow:0 0 3em #fff}#minute-hand-div{display:flex;flex-direction:column;align-items:center;position:relative}#pause-toggle{margin-left:1em;color:#fff;border-color:rgb(36.3243243243,107.6756756757,84.3243243243);background:rgb(17.027027027,50.472972973,39.527027027)}#pause-toggle.on{box-shadow:0 0 6px rgb(191.0675675676,233.4324324324,219.5675675676);border-color:rgb(55.6216216216,164.8783783784,129.1216216216);background:rgb(49.1891891892,145.8108108108,114.1891891892)}#minute-slider{background:rgb(17.027027027,50.472972973,39.527027027);border-style:dashed;border-color:rgb(36.3243243243,107.6756756757,84.3243243243)}#minute-slider.power1{background:rgb(23.4594594595,69.5405405405,54.4594594595);border-color:rgb(42.7567567568,126.7432432432,99.2567567568);box-shadow:0 0 6px rgb(55.6216216216,164.8783783784,129.1216216216)}#minute-slider.power2{background:rgb(36.3243243243,107.6756756757,84.3243243243);border-color:rgb(55.6216216216,164.8783783784,129.1216216216);box-shadow:0 0 8px #ace3d1}#minute-slider.power3{background:rgb(55.6216216216,164.8783783784,129.1216216216);border-color:rgb(95.7297297297,201.2702702703,166.7297297297);box-shadow:0 0 10px #ace3d1}#minute-slider.power4{background:rgb(95.7297297297,201.2702702703,166.7297297297);border-color:#ace3d1;box-shadow:0 0 12px #ace3d1}#minute-slider.power5{background:#ace3d1;border-color:rgb(229.2027027027,246.2972972973,240.7027027027);box-shadow:0 0 15px #ace3d1}#minute-time{margin-bottom:1rem}#minute-time.noTime{color:#555}#minute-row-two{display:flex;flex-wrap:wrap}.front{z-index:30}.inGateway{visibility:hidden}.inGateway #overlay{visibility:visible}.can-afford-aspect{text-shadow:0 0 .6em #ace3d1}#visitButtons{margin:1em 0}#keybindTable td{padding:.2rem}#keybind-overlay-container{float:left;margin-left:1rem}select{background-color:var(--color-darker);color:inherit;border:none;outline:none;font-size:inherit;text-align:right;text-align-last:right}select .evenMessage{background-color:var(--color-dark)}option{direction:rtl}/*# sourceMappingURL=style.min.css.map */ diff --git a/css/style.min.css.map b/css/style.min.css.map index c8f87da2..4e4daf4d 100644 --- a/css/style.min.css.map +++ b/css/style.min.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../styles/style.scss"],"names":[],"mappings":"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","file":"style.min.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../styles/style.scss"],"names":[],"mappings":"AAmJA,6DACI,WACA,qBACA,qBACA,6BAyBJ,WACI,cACA,OAEA,iBACI,YACA,cACA,YACA,SACA,WACA,kBAIR,MACI,iBAOJ,MACI,yBACA,uBACA,qBACA,sBACA,wBACA,sCAGI,gCACI,yBACA,uBACA,qBACA,sBACA,wBACA,qCAEJ,8BACI,yBACA,uBACA,qBACA,sBACA,wBACA,sCAEJ,6BACI,yBACA,uBACA,qBACA,sBACA,wBACA,sCAEJ,4BACI,yBACA,uBACA,qBACA,sBACA,wBACA,sCAEJ,4BACI,yBACA,uBACA,qBACA,sBACA,wBACA,sCAEJ,+BACI,yBACA,uBACA,qBACA,sBACA,wBACA,qCAEJ,kCACI,yBACA,uBACA,qBACA,sBACA,wBACA,qCAEJ,+BACI,yBACA,uBACA,qBACA,sBACA,wBACA,sCASZ,KACI,gBAGJ,KACI,MAnMS,KAoMT,qCACA,sCACA,eACA,kBACA,gBACA,gBAGJ,oBACI,cAGJ,0BACI,4BAGJ,kCACI,WAzNoB,iDA4NxB,0BACI,oCAGJ,kCACI,iBAlOmB,iDAqOvB,IACI,UACA,SAIA,kCAII,2BAGJ,QACI,wBAGJ,SACI,wBAIR,GACI,2BACA,wBACA,cACA,yCAGJ,GACI,2BACA,gBACA,yCAGJ,GACI,2BACA,gBACA,kBACA,yCAGJ,GACI,2BACA,eACA,kBACA,yCAGJ,cACI,iBACA,kBACA,qBACA,kBACA,gBACA,mBACA,4BAlRA,sBAoRuB,IAnRvB,mBAmRuB,IAlRvB,cAkRuB,IA9QvB,gDACA,6CACA,wCAgRJ,SACI,mCACA,iBACA,kBACA,iBACA,aA7RA,sBA8RuB,KA7RvB,mBA6RuB,KA5RvB,cA4RuB,KACvB,YAEA,gBACA,aACA,sBAEA,eACI,cAGJ,eACI,mBACA,aACA,sBAGJ,kBACI,SACA,UACA,qBAGJ,kBACI,iBAEA,qBACI,kBACA,mBACA,UAGJ,kCACI,gBAIR,oBACI,cAGJ,sBACI,iBAGJ,sBACI,aAIR,IACI,gBAGJ,MACI,aAGJ,kCAxVI,sBAyVuB,KAxVvB,mBAwVuB,KAvVvB,cAuVuB,KACvB,YACA,gBAGJ,uDAEI,YACA,WAGJ,gJACI,oBAGJ,OACI,WAEA,4CACA,kBACA,6CACA,6CACA,2BACA,4BAEA,eACI,qDAGJ,UAEI,2BAGJ,UACI,gBACA,YAGJ,UACI,uBAIR,SACI,gBAEA,gBACI,UACA,WACA,aACA,eACA,sBACA,kBACA,OACA,MACA,gBACA,gBACA,UAnZJ,sBAoZ2B,EAnZ3B,mBAmZ2B,EAlZ3B,cAkZ2B,EAGvB,+BACI,YAGJ,0BACI,WAIJ,qFAGI,aACA,mBAGJ,yDAEI,mBACA,WACA,kBACA,YACA,iBACA,gBACA,kBACA,iBACA,oJAEI,2BACA,YAEJ,yEACI,wBAIR,8BACI,YAGJ,mBACI,kBACA,mBAGJ,qBACI,mBAGJ,iCACI,cAKZ,iBACI,WACA,aACA,kCACA,eACA,WACA,WACA,6CAEA,8BACI,aAIR,UACI,YACA,cACA,gBACA,kBACA,iBACA,2BACA,gBAEA,aACI,eACA,2BAKJ,uCAEI,2BACA,wBAEJ,mBACI,2BACA,wBAEJ,cACI,UACA,SAjbJ,qBACA,eAEA,qBACI,cAGJ,iCACI,aA8aR,cACI,eAEA,iBACI,UACA,SA3bJ,qBACA,eAEA,wBACI,cAGJ,oCACI,aAwbR,aACI,gBACA,iBAEA,gBACI,UACA,SAGJ,gBACI,UACA,SACA,qBACA,eAIJ,sBACI,WACA,eACA,mBACA,gBACA,2CACA,mCACA,UAGA,yBACI,iBA5dR,qBACA,eAEA,gCACI,cAGJ,4CACI,aAwdA,4BACI,gBAGJ,+BACI,gBAKI,qCACI,MA7jBF,QA8jBE,sEAEJ,wCACI,MAjkBF,QAkkBE,sEAEJ,sCACI,wDACA,uEAEJ,uCACI,wDACA,uEAOpB,YACI,iBACA,eACI,UACA,SACA,qBACA,eAIR,SACI,WACA,gBACA,MAtlBY,IAulBZ,kCAEA,6BAnkBA,uDACA,oDACA,+CAokBA,iCAEI,SAGA,uCAEI,SACA,qCACA,sCACA,aACA,gBACA,gBAIA,sBAEA,0DACI,oCAGJ,4DACI,oCAGJ,0CACI,aACA,WACA,YACA,eACA,+BACA,wBACA,4CACA,+CAEA,6BACA,eA/kBZ,yBACA,wBACA,sBACA,qBACA,iBAilBA,YACI,gBACA,aACA,qBACA,qBACA,4BACA,0BAGJ,YACI,qBACA,UACA,SAGJ,YACI,aACA,SAIR,QACI,WACA,UAGJ,KACI,gBAGA,qBACA,kBAEA,QACI,cACA,iBACA,oBAGJ,QACI,cACA,kBAGJ,YACI,MA/rBM,QAgsBN,4BAGJ,gBACI,MAjsBU,QAksBV,sEAGJ,kBACI,sBACA,kBACA,UACA,kBACA,eACA,aACA,gBACA,mBACA,iBACA,kCAjrBJ,uDACA,oDACA,+CAkrBI,6BACI,gBAGJ,+BACI,gBACA,kBACA,gBACA,kCACI,gBACA,mBACA,kBACA,mBAIR,8BACI,gBACA,kBACA,gBACA,iCACI,gBACA,mBACA,kBACA,mBAIR,+BACI,mCAKZ,mBACI,YACA,UACA,kCACA,+CACA,cAGJ,gBAEI,YACI,0CAKR,SAEI,kCAxuBA,uDACA,oDACA,+CAwuBA,aAEA,qBACI,wBAIR,YACI,kBAEA,cACA,2BAvwBA,sBAwwBuB,KAvwBvB,mBAuwBuB,KAtwBvB,cAswBuB,KAtvBvB,wDACA,qDACA,gDAsvBA,uCAGJ,cACI,qBACA,YAGJ,YAEI,YAEA,mBAGI,0BAGJ,uBACI,aACA,eACA,uBAEA,0BACI,qBAGJ,0BACI,qBAGJ,8BACI,qBACA,YACA,YACA,WAIR,gBACI,WACA,uBACI,WAKZ,uBAEI,eAGJ,UACI,kBAEA,aACI,UACA,SAGJ,aAhwBA,qBACA,eAEA,oBACI,cAGJ,gCACI,aA8vBI,+BACI,MAz1BE,QA01BF,sEAEJ,kCACI,MA71BE,QA81BF,sEAEJ,gCACI,wDACA,uEAEJ,iCACI,wDACA,uEAMhB,qBACI,WACA,UAOJ,gBAEI,YAIA,2GACI,gBACA,iBACA,kBACA,aACA,sCACA,yBACA,+BAIJ,+FACI,YACA,eACA,aAIR,qBACI,WAIJ,oBACI,WACA,UAIJ,qBACI,YACA,UAIJ,YACI,sBACA,+CACA,6BAEA,oBACI,+BAEJ,qBACI,6BAEJ,yBACI,4BACA,6BAKJ,2BACI,kBACA,eAIR,iBACI,uBACA,+CAGJ,aACI,YACA,gBACA,YACA,UACA,2BACA,6CACA,6BAEA,gBACI,uBACA,UACA,SACA,iBACA,gBAGJ,gBACI,4BACA,SAQR,mBACI,cACA,gBACA,eAEA,iCACI,WACA,YACA,UACA,6BAGJ,gCACI,kBACA,WACA,YACA,UACA,uDACA,2CACA,0BA38BJ,+CACA,4CACA,uCA28BI,aACA,6BAGJ,kCACI,WACA,YACA,UACA,6BAGJ,+BACI,iBAQR,eACI,YACA,WACA,eACA,qBACI,aAIR,OACI,oCACA,MApgCS,KAMT,sBAggCuB,KA//BvB,mBA+/BuB,KA9/BvB,cA8/BuB,KACvB,sCAEA,aACA,eACA,eACA,cACA,eAz9BA,yBACA,wBACA,sBACA,qBACA,iBAu9BA,6BAEA,eAEA,WACI,aACA,mBACA,YACA,eACA,kBAGJ,iBACI,aACA,YACA,YACA,qBACA,kBAGJ,oBACI,gBACA,YACA,YAGJ,aA7hCA,wDACA,qDACA,gDAiiCA,yCAEI,mCACA,yBA1hCJ,6DACA,0DACA,qDA2hCI,2DACI,cACA,2BACA,uBAGJ,iDAziCJ,wBACA,qBACA,gBAyiCQ,mCAIR,aACI,UAGJ,gBACI,qCACA,2BACA,uBACA,eACA,8BAEA,sBACI,gBAGJ,uBACI,gBAGJ,yBACI,cACA,2BACA,uBAGJ,oBAxkCJ,wBACA,qBACA,gBAwkCQ,qCAKZ,cACI,aACA,mBACA,UACA,oCACA,kCACA,MAvmCS,KAwmCT,cAEA,wBACI,qCACA,2BACA,uBACA,eACA,8BAQR,aACI,sCACA,cACA,wBA9mCA,oDACA,iDACA,4CARA,sBAunCuB,IAtnCvB,mBAsnCuB,IArnCvB,cAqnCuB,IAI3B,gBACI,iCAGJ,iBACI,kBACA,WACA,MACA,OACA,aACA,uBAGA,2BACI,wBAIR,aACI,aAGJ,uDACI,cACA,2BAnpCA,sBAopCuB,IAnpCvB,mBAmpCuB,IAlpCvB,cAkpCuB,IA9oCvB,iDACA,8CACA,yCAgpCJ,kBAlpCI,uCACA,oCACA,+BAqpCJ,sBAvpCI,gFACA,6EACA,wEA0pCJ,uBAEI,YAGJ,SAvoCI,gBAwoCiB,GAvoCjB,aAuoCiB,GAtoCjB,QAsoCiB,GACjB,eACA,MACA,OACA,sBACA,WACA,YACA,WAGJ,cAlpCI,gBAmpCiB,GAlpCjB,aAkpCiB,GAjpCjB,QAipCiB,GACjB,eACA,MACA,OACA,sBACA,WACA,YACA,WACA,aACA,uBACA,mBACA,sBAGJ,QACI,eAGJ,mBACI,eAGJ,iCACI,cACA,2BAIJ,sBAEI,oBAGJ,SACI,cACA,2BACA,wBAIJ,WACI,eACA,2BACA,wBAIJ,iBAprCI,yBACA,wBACA,sBACA,qBACA,iBAkrCA,cACA,2BACA,wBACA,gBAKJ,MACI,mCA3tCA,yDACA,sDACA,iDA2tCA,uBA/uCA,sBAgvCuB,KA/uCvB,mBA+uCuB,KA9uCvB,cA8uCuB,KACvB,gBACA,YACA,cACA,eACA,QACA,SA9tCA,oDACA,iDACA,gDACA,+CACA,4CA4tCA,+BACA,eACA,cAEA,WAEA,SACI,oBAGJ,qBACI,2CAGJ,0BACI,sBACA,eACA,gBACA,6BACI,eAIR,gCACI,sBACA,iBAGJ,YACI,YACA,gBAGJ,qBACI,eACA,gBACA,YACA,UAGJ,sBACI,2CAGJ,oBACI,gBAEA,uBACI,gBAIR,qBACI,eACA,qBAGJ,kBACI,cAMR,SACI,kBAEA,YACI,kBACA,wDAGJ,YACI,kBACA,MA90CU,QAi1Cd,YACI,kBACA,MAn1CU,QAs1Cd,YACI,kBACA,MAx1CU,QA21Cd,kBACI,wDAGJ,mDACI,MAh2CU,QAo2ClB,qEACI,iBAl2CoB,gDAm2CpB,aAt2Cc,QAu2Cd,eAEA,qFACI,iBAz2Ce,iDAiBnB,gFACA,6EACA,wEA01CA,6FA51CA,2CACA,wCACA,mCAg2CA,iGACI,iBAj3CgB,4CAk3ChB,MAr3Ce,iDA6BnB,yFACA,sFACA,iFAy1CI,qIACI,wDAGJ,iHACI,iBA33CY,gDAqBpB,wBACA,qBACA,gBAy2CA,yGACI,iBAh4CgB,4CAi4ChB,uDACA,8DAEA,6IACI,uDAGJ,yHACI,iBAz4CY,4CAoBpB,wBACA,qBACA,gBAw3CA,iHACI,2EACA,iBAl5CgB,iDA25CxB,cAj5CI,sBAk5CuB,IAj5CvB,mBAi5CuB,IAh5CvB,cAg5CuB,IACvB,iBA55CoB,gDAepB,+EACA,4EACA,uEA64CA,YAEA,2DAEI,mBAGJ,0BA55CA,sBA65C2B,KA55C3B,mBA45C2B,KA35C3B,cA25C2B,KAv5C3B,uCACA,oCACA,+BAu5CI,YACA,aACA,kBACA,0CAIR,iBAt4CI,gBAu4CiB,EAt4CjB,aAs4CiB,EAr4CjB,QAq4CiB,EACjB,iBAh7CoB,4CAm7CxB,uBACI,uDACA,sEAGJ,+BACI,wDACA,uEAGJ,qBACI,MAv8CU,KAw8CV,YACI,0CAKR,mBACI,qBACA,qBAEA,0BACI,qBACA,YAIR,qBACI,qBACA,eACA,wBACI,eAIR,eACI,iBAz9CoB,gDA09CpB,aA79Cc,QA89Cd,MAx9CS,KAy9CT,iBACA,UAGJ,qCACI,gBAGJ,iBACI,kBACA,iBACA,aAGJ,qBACI,iBA1+CoB,4CA6+CxB,0BACI,iBA9+CoB,4CAi/CxB,YACI,iBAGJ,aACI,iBAII,yGACI,iBA7/CY,iDAkgDxB,WACI,qBACA,sBA1/CA,sBA4/CuB,KA3/CvB,mBA2/CuB,KA1/CvB,cA0/CuB,KACvB,iBAtgDoB,gDAepB,iFACA,8EACA,yEAu/CA,aACA,aACA,eAEA,4IA7/CA,gFACA,6EACA,wEAggDJ,mBACI,qBACA,sBA1gDA,sBA4gDuB,KA3gDvB,mBA2gDuB,KA1gDvB,cA0gDuB,KACvB,iBArhDoB,4CAcpB,6EACA,0EACA,qEAugDA,aACA,aACA,eAEA,oLA7gDA,gFACA,6EACA,wEAghDJ,eAxhDI,sBAyhDuB,KAxhDvB,mBAwhDuB,KAvhDvB,cAuhDuB,KACvB,iBAriDmB,iDAiBnB,gFACA,6EACA,wEAohDA,cAGJ,oBACI,+BACA,YACA,aACA,eACA,YAEA,wBAtiDA,sBAuiD2B,KAtiD3B,mBAsiD2B,KAriD3B,cAqiD2B,KAG3B,0BACI,YACI,iLAhiDR,wBACA,qBACA,gBAmiDI,8BA3iDJ,yCACA,sCACA,iCA8iDA,2BA1iDA,wBACA,qBACA,gBA6iDJ,qBACI,iBAGJ,SACI,cACA,oCACA,WACA,kBACA,mBACA,kCACA,iBACA,kBACA,kBACA,mBACA,iBACA,oBACA,gBACA,eACA,WACA,UACA,uBACA,6BACA,iBAEA,eACI,UACA,sBAGJ,4BACI,eAGJ,wBACI,iCAIR,uBACI,YAGJ,gBACI,WAGJ,eACI,YACA,gEACA,aArnDoB,4CAsnDpB,0BACI,iBAvnDgB,4CAwnDhB,4DAEJ,yBACI,iBA5nDgB,gDA6nDhB,aA9nDgB,iDAkoDxB,2BACI,SACA,0CAGJ,wBACI,SACA,2CAGJ,iCACI,SACA,2BAGJ,oCACI,SACA,0BAGJ,WACI,kBACA,kBAIA,uBACI,qBAGJ,uBACI,qBAGJ,2BACI,qBACA,YACA,eACA,cAEA,2CACI,eACA,cAKJ,uCACI,iBACA,YAKZ,eACI,UAGJ,aACI,WACA,UAEA,sBACI,aACA,WACA,eACA,gBACA,cAEA,mCACI,YAGJ,8CACI,YACA,gBAKZ,cACI,YACA,UAEA,uBACI,aACA,WACA,eACA,gBACA,cAEA,oCACI,YAGJ,+CACI,YACA,gBAKZ,OACI,wBAGJ,WACI,aAGJ,oBACI,WACA,aAjvDoB,gDAkvDpB,WAjvDoB,4CAmvDpB,6BACI,iBAGJ,6BACI,2BACA,aA3vDgB,iDA4vDhB,WA3vDgB,gDA6vDhB,oCACI,qEACA,aAhwDY,iDAiwDZ,2DAGJ,oCACI,qEACA,aAtwDY,iDAuwDZ,4DAGJ,oCACI,qEACA,aA7wDW,iDA8wDX,WA7wDY,iDAgxDhB,oCACI,qEACA,aApxDM,QAqxDN,4DAGJ,oCACI,qEACA,+DACA,WA1xDW,iDA8xDnB,6BACI,aA5xDgB,4CAgyDxB,UACI,WACA,0BAGJ,WACI,WAGJ,gBACI,cAGJ,cACI,aAEA,qBACI,WACA,UACA,YAIR,oBACI,gBACA,mBAGJ,gBACI,WAGJ,WACI,oCACA,0BAGJ,gBACI,wBAGJ,iBACI,aACA,sBACA,mBACA,kBAGJ,cACI,gBACA,WACA,aAp1DoB,gDAq1DpB,WAp1DoB,4CAs1DpB,iBACI,qEACA,aA11DgB,iDA21DhB,4DAIR,eACI,WA91DoB,4CA+1DpB,oBACA,aAj2DoB,gDAm2DpB,sBACI,0DACA,6DACA,oEAGJ,sBACI,WA12DgB,gDA22DhB,aA52DgB,iDA62DhB,2BAGJ,sBACI,WAj3DgB,iDAk3DhB,aAn3De,iDAo3Df,4BAGJ,sBACI,WAx3De,iDAy3Df,aA13DU,QA23DV,4BAGJ,sBACI,WA/3DU,QAg4DV,+DACA,4BAIR,aACI,mBAEA,oBACI,WAIR,gBACI,aACA,eAGJ,OACI,WAGJ,WACI,kBAEA,oBACI,mBAIR,mBACI,6BAGJ,cACI,aAIA,iBACI,cAIR,2BACI,WACA,iBAGJ,OACI,qCACA,cACA,YACA,aACA,kBACA,iBACA,sBAEA,oBACI,mCAIR,OACI","file":"style.min.css"} \ No newline at end of file From e40c11b0c51a357008b6c83a320c514d544f9e68 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Fri, 30 Jan 2026 17:48:25 +0400 Subject: [PATCH 140/152] -filled in --- js/data/homeactions.js | 419 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 409 insertions(+), 10 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 77c953de..10e1b376 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -2623,7 +2623,48 @@ SharkGame.HomeActions = { seagrasstoScience: {}, // MAKE ADVANCED RESOURCES /////////////////////// - transmuteSharkonium: {}, + transmuteSharkonium: { + name: "Transmute stuff to sharkonium", + effect: { + resource: { + sharkonium: 1, + }, + }, + cost: [ + { + resource: "crystal", + costFunction: "constant", + get priceIncrease() { + return 5 - SharkGame.Aspects.syntheticTransmutation.level; + }, + }, + { + resource: "sand", + costFunction: "constant", + get priceIncrease() { + return 15 - 3 * SharkGame.Aspects.syntheticTransmutation.level; + }, + }, + ], + max: "sharkonium", + prereq: { + upgrade: ["transmutation"], + }, + outcomes: [ + "Transmutation destination!", + "Transmutation rejuvenation!", + "Transmogrification revelation!", + "Transformation libation!", + "Transfiguration nation! ...wait.", + "Sharkonium arise!", + "Arise, sharkonium!", + "More sharkonium!", + "The substance that knows no name! Except the name sharkonium!", + "The substance that knows no description! It's weird to look at.", + "The foundation of a modern shark frenzy!", + ], + helpText: "Convert ordinary resources into sharkonium, building material of the future!", + }, // end of processing code coatHardbark: { name: "Coat driftwood to make hardbark", effect: { @@ -2646,19 +2687,341 @@ SharkGame.HomeActions = { "Yes, I suppose the crystal is really hard to coat with…", "It’s… honestly a little impressive. For a fish, of course.", "Gah. I’ve made so many typos trying to spell hardbark.", + "help me I got some crystal stuck on me", + "How did such a strong recipe end up with mudskippers...?", ], helpText: "Coat sturdy driftwood pieces with crystal to make hardbark.", }, // BUY ANIMALS (and jobs) ///////////////////////////////// - getShark: {}, // end of creature code - getScientist: {}, // end of job code - getNurse: {}, // end of breeder code - getManta: {}, // end of creature code - getLaser: {}, // end of job code - getMaker: {}, // end of breeder code - getCrab: {}, // end of creature code - getBrood: {}, // end of breeder code + getShark: { + name: "Recruit shark", + effect: { + resource: { + shark: 1, + }, + }, + cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 5 }], + max: "shark", + prereq: { + resource: { + fish: 5, + }, + }, + outcomes: [ + "A bignose shark joins you.", + "A blacktip reef shark joins you.", + "A blue shark joins you.", + "A bull shark joins you.", + "A cat shark joins you.", + "A crocodile shark joins you.", + "A dusky whaler shark joins you.", + "A dogfish joins you.", + "A graceful shark joins you.", + "A grey reef shark joins you.", + "A goblin shark joins you.", + "A hammerhead shark joins you.", + "A hardnose shark joins you.", + "A lemon shark joins you.", + "A milk shark joins you.", + "A nervous shark joins you.", + "An oceanic whitetip shark joins you.", + "A pigeye shark joins you.", + "A sandbar shark joins you.", + "A silky shark joins you.", + "A silvertip shark joins you.", + "A sliteye shark joins you.", + "A speartooth shark joins you.", + "A spinner shark joins you.", + "A spot-tail shark joins you.", + "A mako shark joins you.", + "A tiger shark joins you.", + "A tawny shark joins you.", + "A white shark joins you.", + "A zebra shark joins you.", + ], + multiOutcomes: [ + "A whole bunch of sharks join you.", + "That's a lot of sharks.", + "The shark community grows!", + "More sharks! MORE SHARKS!", + "Sharks for the masses. Mass sharks.", + "A shiver of sharks! No, that's a legit name. Look it up.", + "A school of sharks!", + "A shoal of sharks!", + "A frenzy of sharks!", + "A gam of sharks! Yes, that's correct.", + "A college of sharks! They're a little smarter than a school.", + ], + helpText: "Recruit a shark to help catch more fish.", + }, // end of creature code + getManta: { + name: "Hire ray", + effect: { + resource: { + ray: 1, + }, + }, + cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 15 }], + max: "ray", + prereq: { + resource: { + shark: 5, + }, + }, + outcomes: [ + "These guys seem to be kicking up a lot of sand!", + "A spotted eagle ray joins you.", + "A manta ray joins you.", + "A stingray joins you.", + "A clownnose ray joins you.", + "A bluespotted maskray joins you.", + "A bluntnose stingray joins you.", + "A oman masked ray joins you.", + "A bulls-eye electric ray joins you.", + "A shorttailed electric ray joins you.", + "A bentfin devil ray joins you.", + "A lesser electric ray joins you.", + "A cortez electric ray joins you.", + "A feathertail stingray joins you.", + "A thornback ray joins you.", + "A giant shovelnose ray joins you.", + "A pacific cownose ray joins you.", + "A bluespotted ribbontail ray joins you.", + "A marbled ribbontail ray joins you.", + "A blackspotted torpedo ray joins you.", + "A marbled torpedo ray joins you.", + "A atlantic torpedo ray joins you.", + "A panther torpedo ray joins you.", + "A spotted torpedo ray joins you.", + "A ocellated torpedo joins you.", + "A caribbean torpedo joins you.", + "A striped stingaree joins you.", + "A sparesly-spotted stingaree joins you.", + "A kapala stingaree joins you.", + "A common stingaree joins you.", + "A eastern fiddler ray joins you.", + "A bullseye stingray joins you.", + "A round stingray joins you.", + "A yellow stingray joins you.", + "A cortez round stingray joins you.", + "A porcupine ray joins you.", + "A sepia stingaree joins you.", + "A banded stingaree joins you.", + "A spotted stingaree joins you.", + "A sea pancake joins you.", + ], + multiOutcomes: [ + "A whole bunch of rays join you.", + "That's a lot of rays.", + "The ray conspiracy grows!", + "I can't even deal with all of these rays.", + "More rays more rays more more more.", + "A school of rays!", + "A fever of rays! Yes, seriously. Look it up.", + "A whole lotta rays!", + "The sand is just flying everywhere!", + "So many rays.", + ], + helpText: "Hire a ray to help collect fish. They might kick up some sand from the seabed.", + }, // end of creature code + getCrab: { + name: "Acquire crab", + effect: { + resource: { + crab: 1, + }, + }, + cost: [{ resource: "fish", costFunction: "linear", priceIncrease: 10 }], + max: "crab", + prereq: { + resource: { + shark: 10, + ray: 4, + }, + }, + outcomes: [ + "A crab starts sifting shiny things out of the sand.", + "A bering hermit joins you.", + "A blackeye hermit joins you.", + "A butterfly crab joins you.", + "A dungeness crab joins you.", + "A flattop crab joins you.", + "A greenmark hermit joins you.", + "A golf-ball crab joins you.", + "A graceful crab joins you.", + "A graceful decorator crab joins you.", + "A graceful kelp crab joins you.", + "A green shore crab joins you.", + "A heart crab joins you.", + "A helmet crab joins you.", + "A longhorn decorator crab joins you.", + "A maroon hermit joins you.", + "A moss crab joins you.", + "A northern kelp crab joins you.", + "A orange hairy hermit joins you.", + "A purple shore crab joins you.", + "A pygmy rock crab joins you.", + "A puget sound king crab joins you.", + "A red rock crab joins you.", + "A scaled crab joins you.", + "A sharpnose crab joins you.", + "A spiny lithoid crab joins you.", + "A widehand hermit joins you.", + "A umbrella crab joins you.", + ], + multiOutcomes: [ + "A lot of crabs join you.", + "CRABS EVERYWHERE", + "Crabs. Crabs. Crabs!", + "Feels sort of crab-like around here.", + "A cast of crabs!", + "A dose of crabs!", + "A cribble of crabs! Okay, no, that one's made up.", + "So many crabs.", + "I'm sorry to say, but you have crabs. Everywhere.", + ], + helpText: "Hire a crab to find things that sharks and rays overlook.", + }, // end of creature code + getScientist: { + name: "Train science shark", + effect: { + resource: { + scientist: 1, + }, + }, + cost: [ + { resource: "shark", costFunction: "constant", priceIncrease: 1 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 20 }, + ], + max: "scientist", + prereq: { + resource: { + crystal: 20, + shark: 1, + }, + }, + outcomes: [ + "Doctor Shark, coming right up!", + "A scientist shark is revealed!", + "After many painful years of study, a shark that has developed excellent skills in making excuses-- er, in science!", + "PhD approved!", + "Graduation complete!", + "A new insight drives a new shark to take up the cause of science!", + ], + multiOutcomes: [ + "The training program was a success!", + "Look at all this science!", + "Building a smarter, better shark!", + "Beakers! Beakers underwater! It's madness!", + "Let the science commence!", + "Underwater clipboards! No I don't know how that works either!", + "Careful teeth record the discoveries!", + ], + helpText: "Train a shark in the fine art of research and the science of, well, science.", + }, // end of job code + getNurse: { + name: "Train nurse shark", + effect: { + resource: { + nurse: 1, + }, + }, + cost: [ + { resource: "shark", costFunction: "constant", priceIncrease: 1 }, + { resource: "fish", costFunction: "linear", priceIncrease: 100 }, + ], + max: "nurse", + prereq: { + resource: { + shark: 1, + }, + upgrade: ["biology"], + }, + outcomes: [ + "A nurse shark is ready!", + "Shark manufacturer primed.", + "Nurse shark trained.", + "Medical exam passed! Nurse shark is go!", + ], + multiOutcomes: [ + "More sharks are on the way soon.", + "Shark swarm begins!", + "There will be no end to the sharks!", + "Sharks forever!", + "The sharks will never end. The sharks are eternal.", + "More sharks to make more sharks to make more sharks...", + ], + helpText: "Remove a shark from fish duty and set them to shark making duty.", + }, // end of breeder code + getLaser: { + name: "Equip laser ray", + effect: { + resource: { + laser: 1, + }, + }, + cost: [ + { resource: "ray", costFunction: "constant", priceIncrease: 1 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 50 }, + ], + max: "laser", + prereq: { + resource: { + ray: 1, + }, + upgrade: ["laserRays"], + }, + outcomes: [ + "Laser ray online!", + "Laser ray! With a laser ray! It's laser ray, with a laaaaaser raaaay!", + "Laser ray.", + "Ray suited up with a laaaaaaser!", + "Ray lasered. To use a laser. Not the subject of a laser.", + ], + multiOutcomes: [ + "Boil the seabed!", + "Churn the sand to crystal!", + "Laser ray armada in position!", + "Ray crystal processing initiative is growing stronger every day!", + "Welcome to the future! The future is lasers!", + ], + helpText: "Remove a ray from sand detail and let them fuse sand into raw crystal.", + }, // end of job code + getMaker: { + name: "Instruct a ray maker", + effect: { + resource: { + maker: 1, + }, + }, + cost: [ + { resource: "ray", costFunction: "constant", priceIncrease: 1 }, + { resource: "fish", costFunction: "linear", priceIncrease: 300 }, + ], + max: "maker", + prereq: { + resource: { + ray: 1, + }, + upgrade: ["rayBiology"], + }, + outcomes: [ + "More rays lets you get more rays which you can then use to get more rays.", + "The ray singularity begins!", + "A ray maker is ready.", + "Looks like you gave them quite the ray maker blow! 'Them' being the intangible enemy that is lacking in resources.", + "The ray seems concerned, but obliges. The mission has been given.", + ], + multiOutcomes: [ + "All these makers. What are they making? What is it for? Oh. It's rays, and it's probably for sand or something.", + "More ray makers means more rays. Do you understand what that means?! Do you?! It means more rays. Good. On the same page, then.", + "Rapidly breeding aquatic wildlife is probably a severe ecological hazard. Good thing this isn't Earth's oceans, probably!", + "Have you ever thought about what the rays wanted? Because this might have been what they wanted after all.", + "MORE LASER RAYS FOR THE LASER ARMY-- oh. Well, this is good too.", + ], + helpText: "Remove a ray from sand business and let them concentrate on making more rays.", + }, // end of breeder code getMudskipper: { name: "Liberate mudskipper", effect: { @@ -2751,6 +3114,42 @@ SharkGame.HomeActions = { ], helpText: "Provide a crab with coral and seagrass to plant.", }, + getBrood: { + name: "Form crab brood", + effect: { + resource: { + brood: 1, + }, + }, + cost: [ + { resource: "crab", costFunction: "constant", priceIncrease: 20 }, + { resource: "fish", costFunction: "linear", priceIncrease: 200 }, + ], + max: "brood", + prereq: { + resource: { + crab: 1, + }, + upgrade: ["crabBiology"], + }, + outcomes: [ + "A bunch of crabs pile together into some sort of weird cluster.", + "Crab team, assemble! FORM THE CRAB BROOD!", + "[This message has been censored for reasons of being mostly really gross.]", + "Eggs, eggs everywhere, but never stop and think.", + "Writhing crab pile. Didn't expect those words next to each other today, did you.", + "The crab brood is a rarely witnessed phenomenon, due to being some strange behaviour of crabs that have been driven to seek crystals for reasons only they understand.", + ], + multiOutcomes: [ + "The broods grow. The swarm rises.", + "All these crabs are probably a little excessive. ...is what I could say, but I'm going to say this instead. MORE CRABS.", + "A sea of crabs on the bottom of the sea. Clickity clackity.", + "Snip snap clack clack burble burble crabs crabs crabs crabs.", + "More crabs are always a good idea. Crystals aren't cheap.", + "The broods swell in number. The sharks are uneasy, but the concern soon passes.", + ], + helpText: "Meld several crabs into a terrifying, incomprehensible crab-producing brood cluster.", + }, // end of breeder code // MUDSKIPPER JOBS /////////////////////////// getBurrow: { @@ -2805,7 +3204,7 @@ SharkGame.HomeActions = { multiOutcomes: [ "//*to be written in future*//", ], - helpText: "Teach a mudskipper techniques on puppet work, so that it may pass on its knowledge.", + helpText: "Teach a mudskipper techniques on puppetwork, so that it may pass on its knowledge.", }, // end of job code // CARACARA JOBS /////////////////////////// From eb8992abc317d247a189f15f1907fd1b1dc0f4a6 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 31 Jan 2026 20:39:30 +0400 Subject: [PATCH 141/152] -changed coral collector to coral picker --- js/data/homeactions.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 10e1b376..dec5cf1e 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -3265,11 +3265,11 @@ SharkGame.HomeActions = { }, // end of job code // MUDSKIPPER PUPPETS ////////////////////// - getCoralCollector: { - name: "Assemble coral collector", + getCoralPicker: { + name: "Assemble coral picker", effect: { resource: { - coralCollector: 1, + coralPicker: 1, }, }, cost: [ @@ -5728,7 +5728,7 @@ SharkGame.HomeActionCategories = { "getSeabedStripper", "getCalciniumConverter", "getClamScavenger", - "geCoralCollector", + "getCoralPicker", "getShoreQueller", "getDriftwoodSnarer", "getHardbarkSmith", From 8ecce6e6b46d83b63afdf489e7c0ca4f70dc4297 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 31 Jan 2026 20:42:10 +0400 Subject: [PATCH 142/152] -changed coral collector to coral picker --- js/data/resourcetable.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 035fce01..d7a9abf9 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -868,9 +868,9 @@ SharkGame.ResourceTable = { }, }, - coralCollector: { - name: "coral collectors", - singleName: "coral collector", + coralPicker: { + name: "coral pickers", + singleName: "coral picker", desc: "Crablike puppets that saw at the coral with serrated claws.", color: "#99004D", income: { @@ -1856,7 +1856,7 @@ SharkGame.InternalCategories = { }, mudskipperpuppets: { name: "Mudskipper Puppets", - resources: ["hardbark", "coralCollector", "hardbarkSmith", "driftwoodSnarer", "shoreQueller", "safeholdSentinel", "barrageBraver", "gatemasterPuppet"], + resources: ["hardbark", "coralPicker", "hardbarkSmith", "driftwoodSnarer", "shoreQueller", "safeholdSentinel", "barrageBraver", "gatemasterPuppet"], }, basicmaterials: { resources: ["fish", "sand", "crystal", "science", "junk"], From 0667e7ce4e73c1f287306ed676bab397349fb40b Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 31 Jan 2026 20:51:07 +0400 Subject: [PATCH 143/152] =?UTF-8?q?-added=20the=20last=20bits=20of=20?= =?UTF-8?q?=E2=80=98shared=20button=E2=80=99=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/data/homeactions.js | 191 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 190 insertions(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index dec5cf1e..6af23988 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -2620,7 +2620,35 @@ SharkGame.HomeActions = { debugButton: {}, // PROCESSING //////////////////////////////////// - seagrasstoScience: {}, + seagrassToScience: { + name: "Study seagrass flowers", + effect: { + resource: { + get science() { + return SharkGame.Upgrades.purchased.includes("supernaturalSeagrass") ? 10 : 1; + }, + }, + }, + cost: [{ resource: "seagrass", costFunction: "constant", priceIncrease: 2 }], + max: "seagrass", + prereq: { + resource: { + seagrass: 1, + }, + upgrade: ["xenobiology"], + }, + outcomes: [ + "There's science inside these things, surely!", + "The cause of science is advanced!", + "This is perhaps maybe insightful!", + "Why are we even doing this? Who knows! Science!", + "Results still inconclusive! Unsurpsingly...", + "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.", + ], + helpText: "Dissect seagrass flowers to further the cause of science. This is research, probably!", + }, // end of processing code // MAKE ADVANCED RESOURCES /////////////////////// transmuteSharkonium: { @@ -3264,6 +3292,167 @@ SharkGame.HomeActions = { helpText: "Get a caracara interested in seagrass to walk along shores laden with it.", }, // end of job code + // SHARK MACHINES ////////////////////////// + getCrystalMiner: { + name: "Build crystal miner", + effect: { + resource: { + crystalMiner: 1, + }, + }, + cost: [ + { + resource: "crystal", + costFunction: "linear", + get priceIncrease() { + return 100 - 50 * SharkGame.Aspects.amorphousAssembly.level; + }, + }, + { + resource: "sand", + costFunction: "linear", + get priceIncrease() { + return 200 - 100 * SharkGame.Aspects.amorphousAssembly.level; + }, + }, + { resource: "sharkonium", costFunction: "linear", priceIncrease: 25 }, + ], + max: "crystalMiner", + prereq: { + resource: { + sharkonium: 25, + }, + upgrade: ["automation"], + }, + outcomes: [ + "Crystal miner activated.", + "Crystal miner constructed.", + "Mining machine online.", + "Construction complete.", + "Carve rock. Remove sand. Retrieve target.", + ], + multiOutcomes: [ + "The machines rise.", + "The miners dig.", + "The crystal shall be harvested.", + "Crystal miners are complete.", + ], + helpText: "Construct a machine to automatically harvest crystals efficiently.", + }, // end of machine code + getSandDigger: { + name: "Build sand digger", + effect: { + resource: { + sandDigger: 1, + }, + }, + cost: [ + { + resource: "sand", + costFunction: "linear", + get priceIncrease() { + return 500 - 250 * SharkGame.Aspects.amorphousAssembly.level; + }, + }, + { resource: "sharkonium", costFunction: "linear", priceIncrease: 150 }, + ], + max: "sandDigger", + prereq: { + resource: { + sharkonium: 150, + }, + upgrade: ["automation"], + }, + outcomes: [ + "Sand digger constructed.", + "Sand digger reaches into the seabed.", + "The digger begins to shuffle sand into its machine maw. Rays dart away.", + "The machine is online.", + "The machine acts immediately, shovelling sand.", + ], + multiOutcomes: [ + "The machines increase in number.", + "The diggers devour.", + "All sand must be gathered.", + "The rays are concerned.", + "Devour the sands. Consume.", + "Giant machines blot out our sun.", + ], + helpText: "Construct a machine to automatically dig up sand efficiently.", + }, // end of machine code + getFishMachine: { + name: "Build fish machine", + effect: { + resource: { + fishMachine: 1, + }, + }, + cost: [{ resource: "sharkonium", costFunction: "linear", priceIncrease: 100 }], + max: "fishMachine", + prereq: { + resource: { + sharkonium: 100, + }, + upgrade: ["automation"], + }, + outcomes: [ + "Fish machine activated.", + "Fish machine constructed.", + "Fishing machine online.", + "Construction complete.", + "The quarry moves. But the machine is faster.", + ], + multiOutcomes: [ + "One day there will be no fish left. Only the machines.", + "Today the shark is flesh. Tomorrow, machine.", + "Your metal servants can sate the hunger. The hunger for fish.", + "The fishing machines are more efficient than the sharks. But they aren't very smart.", + "Automated fishing.", + "The power of many, many sharks, in many, many devices.", + ], + helpText: "Construct a machine to automatically gather fish efficiently.", + }, // end of machine code + getAutoTransmuter: { + name: "Build auto-transmuter", + effect: { + resource: { + autoTransmuter: 1, + }, + }, + cost: [ + { + resource: "crystal", + costFunction: "linear", + get priceIncrease() { + return 100 - 50 * SharkGame.Aspects.amorphousAssembly.level; + }, + }, + { resource: "sharkonium", costFunction: "linear", priceIncrease: 100 }, + ], + max: "autoTransmuter", + prereq: { + resource: { + sharkonium: 100, + }, + upgrade: ["engineering"], + }, + outcomes: [ + "Auto-transmuter activated.", + "Auto-transmuter constructed.", + "Transmutation machine online.", + "Construction complete.", + "Provide inputs. Only the output matters.", + ], + multiOutcomes: [ + "Auto-transmuters are prepared.", + "The difference between science and magic is reliable application.", + "All is change.", + "Change is all.", + "The machines know many secrets, yet cannot speak of them.", + ], + helpText: "Construct a machine to automatically and efficiently transmute sand and crystal to sharkonium.", + }, // end of machine code + // MUDSKIPPER PUPPETS ////////////////////// getCoralPicker: { name: "Assemble coral picker", From 3d4c8e47b8c91226f8e40c70c23866ccd5c00313 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sat, 31 Jan 2026 20:54:22 +0400 Subject: [PATCH 144/152] =?UTF-8?q?-removed=20the=20upgrade=20discount=20o?= =?UTF-8?q?n=20Shore=E2=80=99s=20seagrassToScience?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/data/homeactions.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 6af23988..51f0bb41 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -2624,9 +2624,7 @@ SharkGame.HomeActions = { name: "Study seagrass flowers", effect: { resource: { - get science() { - return SharkGame.Upgrades.purchased.includes("supernaturalSeagrass") ? 10 : 1; - }, + science: 5, }, }, cost: [{ resource: "seagrass", costFunction: "constant", priceIncrease: 2 }], From 0c39215178e326565fa4afec9c872771970b60a6 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 1 Feb 2026 15:18:47 +0400 Subject: [PATCH 145/152] -did a lot of stuff --- js/data/upgrades.js | 373 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 349 insertions(+), 24 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 74c1df2d..cb20e558 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4642,8 +4642,81 @@ SharkGame.Upgrades = { upgrades: ["driftwoodAnalysis"], }, }, - crystalBite: { required: { upgrades: ["justPushFurtherLol"] } }, - crystalSpade: { required: { upgrades: ["justPushFurtherLol"] } }, + crystalBite: { + name: "Crystal Bite-Gear", + desc: "Bite the crystals we have into something to help biting!", + researchedMessage: "Weird teeth-wear has been developed, and sharks can now catch fish better as a result.", + effectDesc: "Sharks are twice as effective with their new biting gear. Turns out they work better outside the mouth!", + cost: { + science: 50, + fish: 100, + crystal: 5, + }, + required: { + upgrades: ["justPushFurtherLol"], + }, + effect: { + incomeMultiplier: { + shark: 2, + }, + }, + }, + crystalSpade: { + name: "Crystal Spades", + desc: "Fashion strange harness-tools for the rays.", + researchedMessage: "The rays can now bother the sand more effectively, and dig up more sand now!", + effectDesc: "Rays are twice as effective with their specially adapted digging tools.", + cost: { + science: 50, + sand: 500, + crystal: 5, + }, + required: { + upgrades: ["justPushFurtherLol"], + }, + effect: { + incomeMultiplier: { + ray: 2, + }, + }, + }, + crystalScoop: { + name: "Crystal Scoops", + desc: "Design funny looking holdy-things for the crabs!", + researchedMessage: "Our crabs used to brush aside the sand to look for crystals - now they can scoop it! Scoopy scoop.", + effectDesc: + "Crabs are twice as effective at digging for crystals. The crabs are overjoyed to hold these tiny tools with their tiny claws.", + cost: { + science: 50, + crystal: 10, + }, + required: { + upgrades: ["justPushFurtherLol"], + }, + effect: { + incomeMultiplier: { + crab: 2, + }, + }, + }, + crystalContainer: { + name: "Crystal Containers", + desc: "Make weird bottle things from the crystals we have. Maybe useful??", + researchedMessage: "Well, things can go into these containers that aren't water. This makes science easier!", + effectDesc: "Scientists are twice as effective at making with the science.", + cost: { + science: 100, + crystal: 50, + }, + required: { + upgrades: ["justPushFurtherLol"], + }, + effect: { + incomeMultiplier: { + scientist: 2, + }, + }, + }, crystalArmour: { name: "Crystal Armour", desc: "Forge some armour for the useful fish.", @@ -4662,22 +4735,260 @@ SharkGame.Upgrades = { }, }, }, // gosh that's a lot of crystals eh --ThreeEels - crystalContainer: { required: { upgrades: ["justPushFurtherLol"] } }, - statsDiscovery: {}, - seabedGeology: {}, - underwaterChemistry: {}, - thermalVents: {}, - biology: {}, - rayBiology: {}, - crabBiology: {}, - laserRays: {}, - sunObservation: {}, - transmutation: {}, - automation: {}, - recyclerDiscovery: { required: { upgrades: ["farExploration"] } }, - engineering: {}, - iterativeDesign: {}, - superprocessing: {}, + statsDiscovery: { + name: "Storage Caverns", + desc: "It's about time to start moving the stores we have to a better place. We've found one but it needs setting up.", + researchedMessage: + "All the goods we've acquired are now being stored and itemised in a mostly flooded cavern system. We're organized! Sort of!", + effectDesc: "By storing things in a centralised location, we now finally have an idea of what we're doing...sort of.", + cost: { + science: 150, + }, + required: { + upgrades: ["crystalContainer"], + }, + }, + underwaterChemistry: { + name: "Underwater Chemistry", + desc: "With the weird bottles, we can now put things and other things into them and see what happens.", + researchedMessage: "Well, nothing useful was determined, but if we keep on doing it we make tremendous leaps for science!", + effectDesc: "Scientists are twice as effective with their new chemical insights.", + cost: { + science: 200, + crystal: 50, + }, + required: { + upgrades: ["crystalContainer"], + }, + effect: { + incomeMultiplier: { + scientist: 2, + }, + }, + }, + seabedGeology: { + name: "Seabed Geology", + desc: "Study the bottom of the ocean to determine the rich, deep, juicy secrets it contains.", + researchedMessage: "Not only did we find a whole bunch of weird things, the rays found that there was more sand!", + effectDesc: "Rays are twice as effective with their understanding of the seabed and its varieties of sediment.", + cost: { + science: 250, + sand: 750, + }, + required: { + upgrades: ["crystalContainer"], + }, + effect: { + incomeMultiplier: { + ray: 2, + }, + }, + }, + thermalVents: { + name: "Thermal Vents", + desc: "Investigate the boiling vents that just seem to keep on heating things up.", + researchedMessage: "This is a wondrous, unending source of heat! Something good must come from this.", + effectDesc: "A power source for future technologies has been discovered.", + cost: { + science: 300, + sand: 1000, + }, + required: { + upgrades: ["seabedGeology"], + }, + }, + laserRays: { + name: "Laser Rays", + desc: "Using arcane shark mystery science, capture the heat of the vents for use by rays.", + researchedMessage: "The rays can now be granted gear that will let them fuse sand into crystal! Future!", + effectDesc: "Laser rays can now be geared up to burn the very sand to glassy crystal.", + cost: { + science: 100, + sand: 5000, + crystal: 100, + }, + required: { + upgrades: ["thermalVents"], + }, + }, + transmutation: { + name: "Transmutation", + desc: "By heating things up and doing science things to them, maybe new things can be made!", + researchedMessage: "A new form of material has been discovered! It has been named after its discoverer, Dr. Sharkonium.", + effectDesc: "Enables transmutation of some random junk we have lying around into sharkonium, material of the future.", + cost: { + science: 4000, + crystal: 1500, + sand: 15000, + }, + required: { + upgrades: ["thermalVents", "underwaterChemistry"], + }, + }, + automation: { + name: "Automation", + desc: "Using sharkonium, we can make things to do things so we don't have to do the things!", + researchedMessage: "Now we don't have to do all the work, machines can do it for us! Future!!", + effectDesc: "Machines can be built to supplement population duties. This is efficient.", + cost: { + science: 3500, + sharkonium: 250, + }, + required: { + upgrades: ["transmutation"], + }, + }, + engineering: { + name: "Engineering", + desc: "The machines sort of suck. Let's make them better by learning how!", + researchedMessage: "The machines are twice as good now! We've figured out new designs in the process, too!", + effectDesc: "Machines are twice as effective. Auto-transmuters are now possible to create.", + cost: { + science: 5000, + sharkonium: 1750, + }, + required: { + upgrades: ["automation"], + seen: ["fishMachine", "crystalMiner", "sandDigger"], + }, + effect: { + incomeMultiplier: { + crystalMiner: 2, + fishMachine: 2, + sandDigger: 2, + }, + }, + }, + recyclerDiscovery: { + name: "Recycler", + desc: "Check out the huge structure that consumed some of our fish and spat out some goo.", + researchedMessage: + "Well this thing is frankly terrifying. I wouldn't swim anywhere near the input holes if I were you. Maybe it'll help though!", + effectDesc: "The machine allows recycling of materials by virtue of a horrifying mechanical maw that consumes all that ventures near it. Future?", + cost: { + science: 75000, + sharkonium: 25000, + }, + required: { + upgrades: ["engineering", "farExploration"], + }, + }, + iterativeDesign: { + name: "Iterative Design", + desc: "The machines are useful, but they could be better. Let's build new ones, from scratch!", + researchedMessage: "As it turns out, science is about learning from mistakes, or so the scientists say. About their own mistakes.", + effectDesc: "All shark machines run twice as fast. Again! Scientists are 4 times faster as well.", + cost: { + science: 15000, + sharkonium: 17500, + }, + required: { + upgrades: ["engineering", "recyclerDiscovery"], + }, + effect: { + incomeMultiplier: { + crystalMiner: 2, + fishMachine: 2, + sandDigger: 2, + autoTransmuter: 2, + skimmer: 2, + heater: 2, + scientist: 4, + }, + }, + }, + superprocessing: { + name: "Superprocessing", + desc: "The recycler wasn't really meant for millions of fish at once. Seeing as that transaction is fairly common, we should probably do something about it.", + researchedMessage: "Eureka! If we make the big things bigger, and the grinders grindier, we can process way more material at once!", + effectDesc: + "The recycler's efficiency only starts dropping at 10 million material inserted at once, instead of 100 thousand. The base efficiency is now 100%.", + cost: { + science: 1e6, + sharkonium: 5e5, + junk: 1e6, + }, + required: { + upgrades: ["iterativeDesign", "recyclerDiscovery"], + }, + }, + sunObservation: { + name: "Sun Observation", + desc: "We must determine what is with the weird glare on the surface of the water.", + researchedMessage: "Shark science has discovered the sun! It has also discovered that looking directly into the sun hurts.", + effectDesc: + "Stabilizer crabs are twice as effective. Is a suns worth many fish? We can see a sun, but where is it really? And what is it made of?", + cost: { + science: 7500, + }, + required: { + upgrades: ["agriculture"], + }, + effect: { + incomeMultiplier: { + stabilizer: 2, + }, + }, + }, + biology: { + name: "Biology", + desc: "What is a shark? What is inside a shark, except for large amounts of fish?", + researchedMessage: "With a new understanding of their own biology, sharks can now specialise in the manufacture of new sharks.", + effectDesc: + "Sharks are twice as effective, and nurse sharks can be bought. Did you know shark eggs don't actually form just because a shark wills them to exist?", + cost: { + science: 600, + }, + required: { + upgrades: ["underwaterChemistry", "agriculture"], + }, + effect: { + incomeMultiplier: { + shark: 2, + }, + }, + }, + crabBiology: { + name: "Crab Biology", + desc: "Crabs are a mystery. They keep to themselves and dig up crystals or tear up grass. What is even up with that? What ARE crabs??", + researchedMessage: + "It turns out crabs are friendly crustaceans that have revealed to the sharks the secrets of crab generation. It involves eggs, or something. Squirmy eggs.", + effectDesc: + "Crabs and stabilizer crabs are four and two times as effective, respectively, and crab broods are available. Crabs are alright but they are also sort of terrifying and weird. Good thing they're on our side!", + cost: { + science: 3500, + seagrass: 1750, + }, + required: { + upgrades: ["biology"], + }, + effect: { + incomeMultiplier: { + crab: 4, + stabilizer: 2, + }, + }, + }, + rayBiology: { + name: "Ray Biology", + desc: "Though kindred to the sharks, we know so little about the rays. If only we could fix this. We need to bait a sand trap.", + researchedMessage: + "Apparently we could have just asked. We learned how rays make more rays. It's kinda similar to sharks, really, but rays.", + effectDesc: + "Rays are four times as effective, and ray makers are available. We may never repair the shark-ray relations to their former state after how awkward this whole affair was.", + cost: { + science: 8000, + sand: 25000, + }, + required: { + upgrades: ["biology"], + }, + effect: { + incomeMultiplier: { + ray: 4, + }, + }, + }, agriculture: { name: "Stabilization", desc: "The rays and crabs have noticed something strange about the sand around these colourful growths...", @@ -4693,6 +5004,20 @@ SharkGame.Upgrades = { seen: ["sand", "roughSand"], }, }, // prev name: stabilization + xenobiology: { + name: "Xenobiology", + desc: "This seagrass stuff is mostly just green or whatever, but what are these THINGS growing on it?", + researchedMessage: "Flowers! What does that even mean!? Further research required. It could be such a benefit for science!", + effectDesc: "We can now dissect seagrass flowers to further the cause of science.", + cost: { + science: 1250, + seagrass: 500, + }, + required: { + upgrades: ["agriculture"], + seen: ["seagrass"], + }, + }, mudskipperBurrowing: { name: "Mudskipper Burrowing", desc: "The mudskippers want to tell us something. We will, of course, heed.", @@ -4789,7 +5114,7 @@ SharkGame.Upgrades = { }, // prev name: tunnelExpedition farExploration: { name: "Sentinel Repairing", - desc: "So, the thing above the latch. We have its parts.", + desc: "So, the thing above the latch. You know how its parts are scattered across the tunnel...?", researchedMessage: "We managed to repair the sentinel. As soon as it started, it opened the latch for us.", effectDesc: "The latch is open. We surged forth into the safehold.", cost: { fish: 5 }, @@ -4800,16 +5125,16 @@ SharkGame.Upgrades = { name: "Raider Truce", desc: "Someone keeps raiding us!!!", researchedMessage: "We held up some fish as an offering. They were snatched from us, and... they came.", - effectDesc: "The mudskippers (and crabs) told us the 'raiders' are named caracaras. They're very prideful.", + effectDesc: "The mudskippers (and crabs) told us the 'raiders' are named caracaras, and are apparently very prideful.", cost: { fish: 5 }, required: { upgrades: ["farExploration"] }, effect: { }, }, crystalTalons: { name: "Crystal Talons", - desc: "This is the text in the lab button thingy...", - researchedMessage: "...and this is the text that goes next to the buttons!", - effectDesc: "This one, however, appears in the log.", + desc: "The caracaras say that our 'seaborn' crystals are very good at breaking abovewater crystals.", + researchedMessage: "With their crystal talons, caracaras work way more efficiently now.", + effectDesc: "Their faces seemed expressionless. But their eyes were the same the sharks' with their bite-gear.", cost: { fish: 5 }, required: { upgrades: ["raiderTruce"] }, effect: { @@ -4866,7 +5191,7 @@ SharkGame.Upgrades = { // firstLog: {}, // secondLog: {}, // thirdLog: {}, - gatemasterScavenging: { + gateDiscovery: { name: "Gatemaster Scavenging", desc: "This is the text in the lab button thingy...", researchedMessage: "...and this is the text that goes next to the buttons!", From 8f7c9327cef443cd45173d8b982d9402f5b9665e Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 1 Feb 2026 15:23:05 +0400 Subject: [PATCH 146/152] =?UTF-8?q?-changed=20Gatemaster=E2=80=99s=20upgra?= =?UTF-8?q?de=20requirement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/data/homeactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 51f0bb41..a235253f 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -3643,7 +3643,7 @@ SharkGame.HomeActions = { sharkonium: 25, crystal: 5, }, - upgrade: ["gatemasterScavenging"], + upgrade: ["gateDiscovery"], }, outcomes: [ "//*to be written in future*//", From 3fc35569c6a21d9495411fb9f703e6468508b23b Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 1 Feb 2026 16:14:32 +0400 Subject: [PATCH 147/152] -added two more (and edited one) of the homemessages --- js/data/homemessages.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/js/data/homemessages.js b/js/data/homemessages.js index aa922a11..0f41528c 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -551,6 +551,11 @@ SharkGame.HomeMessages = { unlock: { totalResource: { burrow: 5 } }, message: "The mudskippers flail in their newly-dug burrows. They say their dance is traditional, as are their oral tales.", }, + { + name: "shore-stability-found", + unlock: { upgrade: ["agriculture"] }, + message: "The stabilizers work diligently, eager to support a loose-laid world. Perhaps there is hope.", + }, { name: "shore-hardbark-coated", unlock: { upgrade: ["hardbarkCoating"] }, @@ -559,7 +564,12 @@ SharkGame.HomeMessages = { { name: "shore-puppets-piloted", unlock: { upgrade: ["puppetAssembly"] }, - message: "The frenzy move the puppets from within. It is nothing like our shark machines.", + message: "The frenzy move the puppets from within. It is nothing like our shark machines. It is lifelike. Glitchless. But primitive.", + }, + { + name: "shore-puppets-taught", + unlock: { upgrade: ["puppetTeaching"] }, + message: "So many tricks. So many techniques. The puppets have become versatile tools fast.", }, ], /* stone: [ From 7542cb349c6091eaa1d026d253c5df1fb7619674 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 1 Feb 2026 17:31:30 +0400 Subject: [PATCH 148/152] -rixed grammar problem --- js/data/homeactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index a235253f..b92be166 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -5073,7 +5073,7 @@ SharkGame.HomeActions = { }, getShoveler: { - name: "Instruct a ray shoveler", + name: "Instruct shoveler ray", effect: { resource: { shoveler: 1, From 2aeb7be9031ff21959862fd2bf6f5da3e39e9af7 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 1 Feb 2026 17:43:14 +0400 Subject: [PATCH 149/152] -mmh --- js/data/homeactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index b92be166..1494a2b0 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -5073,7 +5073,7 @@ SharkGame.HomeActions = { }, getShoveler: { - name: "Instruct shoveler ray", + name: "Instruct a shoveler ray", effect: { resource: { shoveler: 1, From bf752f3acdcdcefdb86f90138c31b09c3fb12fee Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Sun, 1 Feb 2026 20:23:18 +0400 Subject: [PATCH 150/152] -fixed the debugbutton bug How ironic --- js/data/homeactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 1494a2b0..0f6678ac 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -2617,7 +2617,7 @@ SharkGame.HomeActions = { // FREEBIES ////////////////////////////////////// catchFish: {}, - debugButton: {}, + debugbutton: {}, // PROCESSING //////////////////////////////////// seagrassToScience: { From af99ee6401f874229ea3c076bee51ca99efe960d Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Tue, 3 Feb 2026 16:13:27 +0400 Subject: [PATCH 151/152] -synced with Toby --- js/data/homeactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 0f6678ac..6cafe5e6 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -5073,7 +5073,7 @@ SharkGame.HomeActions = { }, getShoveler: { - name: "Instruct a shoveler ray", + name: "Instruct shoveler ray", effect: { resource: { shoveler: 1, From baf37fc7fa6949577cbd29a85000f0a646af4722 Mon Sep 17 00:00:00 2001 From: Three Eels in a Jellyfish Coat Date: Tue, 3 Feb 2026 16:16:17 +0400 Subject: [PATCH 152/152] -synced with Toby --- js/data/resourcetable.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index d7a9abf9..9b6a2b51 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -420,7 +420,7 @@ SharkGame.ResourceTable = { fishMachine: { name: "fish machines", singleName: "fish machine", - desc: "Indiscriminate hunter.", + desc: "Indiscriminate hunters.", color: "#C9C7A7", income: { fish: 400, @@ -1066,7 +1066,7 @@ SharkGame.ResourceTable = { investigator: { name: "octopus investigators", singleName: "octopus investigator", - desc: "Curiousity is the seed of progress.", + desc: "Curiosity is the seed of progress.", color: "#4c5cad", income: { science: 2,