From bcfbbf390026ae54209bcad0d5c57e5d99f7c815 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sun, 7 Dec 2025 15:38:19 -0500 Subject: [PATCH 01/19] Added components for the Chaotic ocean. --- js/data/homeactions.js | 62 ++++++++++++++++++ js/data/resourcetable.js | 132 +++++++++++++++++++++++++++++++++++++++ js/data/upgrades.js | 13 ++++ js/data/worldtypes.js | 20 ++++++ 4 files changed, 227 insertions(+) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index add3fcd7..3bb1744f 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -293,6 +293,68 @@ SharkGame.HomeActions = { ], helpText: "Take a great risk in catching a jellyfish without being stung.", }, + + fakeCatchFish: { + name: "Catch fish", + effect: { + }, + cost: {}, + prereq: {}, + outcomes: [ + "Caught a fis- nevermind.", + "You fail to catch a fish.", + "The fish slips through your jaws.", + "The fish slips past you.", + "You catch a fish. Then it escapes from your maw.", + "Fishn't", + "The fish here feel intangible.", + ], + helpText: "Use your natural shark prowess to find and catch a fish.", + }, + + catchEcho: { + name: "Catch echo", + effect: { + get echo() { + return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; + }, + }, + cost: {}, + prereq: {}, + outcomes: [ + "Caught what used to be a fish.", + "Caught a fish shaped thing.", + "It's so nice to be able to finally catch these!", + "They're tasteless, but they're still fish... kinda?", + "Caught a fragment of potential.", + "This feels familiar somehow...", + "No escape this time, bud!", + "Caught the imprint of a fish.", + "Caught a fish.", + "These fish are kinda fishy...", + "Nothing can escape your maws now!", + "More fish-things for the snails to study!", + "Caught the memory of a fish.", + "Caught an echo.", + "Caught the absence of a fish.", + "Caught the concept of a fish.", + "Caught the fish of a fish.", + "Caught the shark of a fish.", + "Caught the desire for a fish.", + "Caught the potential for a fish.", + "Caught the catching of a fish.", + "Caught the hunger of a fish.", + "Caught the wisp of a fish.", + "Caught the of a fish", + "Caught the mind of a fish.", + "Caught the soul of a fish.", + "Caught the body of a fis- nope nevermind.", + "Caught the light of a fish.", + "Caught the chance of a fish.", + "Caught the silhouette of a fish.", + ], + helpText: "Catch an abstract component of a fish.", + }, // CONVERSIONS //////////////////////////////////////////////////////////////////////////////// diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 0206ae7d..8c258e7b 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1242,6 +1242,138 @@ SharkGame.ResourceTable = { }, value: 180000, // 250 sharkonium, 250 gravel (18000) }, */ + + //chaotic + + snail: { + name: "sea snails", + singleName: "sea snail", + color: "#F6E7A7", + desc: "Shy, yet full of potential.", + income: { + clam: 1, + }, + jobs: [ + "snailBotanist", + "snailGeologist", + "snailMalacologst" + ], + value: 1000, + }, + + snailBotanist: { + name: "snail botanists", + singleName: "snail botanist", + color: "#BED8A7", //change when art's done + desc: "Dedicated to the science of plants.", + income: { + science: 0.25, + kelp: 0.2, + }, + value: 5000, + }, + + snailGeologist: { + name: "snail geologists", + singleName: "snail geologist", + color: "#A3CAE4", //change when art's done + desc: "Endlessly fascinated by rocks.", + income: { + science: 0.25, + crystal: 0.5, + }, + value: 5000, + }, + + snailMalacologist: { + name: "snail malacologists", + singleName: "snail malacologist", + color: "#E1B167", //change when art's done + desc: "The introspective sort.", + income: { + science: 0.25, + snail: 0.05, + }, + value: 5000, + }, + + turtle: { + name: "turtles", + singleName: "turtle", + color: "#6CB46E", //change when art's done + desc: "Travelers along the flow.", + income: { + kelp: 1, + sand: 2, + }, + jobs: [ + ], + value: 4000, + }, + + turtleLocator: { + name: "turtle locators", + singleName: "turtle locator", + color: "#82DB48", //change when art's done + desc: "Taking responsibility.", + income: { + turtle: 0.1, + }, + value: 8000, + }, + + turtleSweeper: { + name: "turtle sweepers", + singleName: "turtle sweeper", + color: "#73BA9D", //change when art's done + desc: "Taking a cursory interest in the seafloor.", + income: { + sand: 0.75 + crystal: 0.75 + }, + value: 6000, + }, + + echo: { //gains production from toggles + name: "echos", + singleName: "echo", + color: "#9CC6A5", //change when art's done + desc: "Many, yet one.", + value: 5000, + }, + + wisp: { + name: "wisps", + singleName: "wisp", + color: "#66DEAF", + desc: "A heavily diluted form of essence.", + value: 2, + }, + + wispCumulator: { + name: "wisp cumulators", + singleName: "wisp cumulator", + color: "#3EBD6C", //change when art's done + desc: "Filters wisps from the ocean currents.", + income: { + wisp: 400, + get crystal() { + return -30 + 15 * SharkGame.Aspects.mechanicalManifestation.level; + }, + }, + value: 70000, + }, + + echoBeacon: { + name: "echo beacons", + singleName: "echo beacon", + color: "#8CBDBC", //change when art's done + desc: "Singing a song out towards infinity.", + income: { + echo: 1, + }, + value: 70000, + }, }; SharkGame.GeneratorIncomeAffectorsOriginal = { diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 826c7463..635d5781 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4527,4 +4527,17 @@ SharkGame.Upgrades = { }, }, }, + chaotic: { + recontainChaos: { + name: "Recontain Chaos", + desc: "PLACEHOLDER", + researchedMessage: "PLACEHOLDER", + effectDesc: "PLACEHOLDER", + cost: { + wisp: 8e12, + }, + required: { + }, + }, + }, }; diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 1e26e359..49f7bd35 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -354,6 +354,26 @@ SharkGame.WorldTypes = { seaApple: 1, sharkonium: 1, }, + }, + chaotic: { + name: "Chaotic", + vagueDesc: "Feels overwhelming.", + desc: "A planet filled with ethereal, everchanging sealife.", + shortDesc: "swirling green.", + foresight: { + vagueLongDesc: "Waves of bizzare energy radiate from this world.", + longDesc: "The currents make most sealife phase in and out of reality. Plants and shelled creatures appear to be immune to this effect.", + missing: ["fish"], + present: ["snail", "turtle", "echo"], + tip: "Harnessing the energy plauging this world could be the key to fixing it. Flexability is your greatest asset.", + }, + entry: "You awake in a bizzare place, the last traces of your memories washed away by an oddly familiar force.", + style: "default", + includedResources: [""], + absentResources: ["fish", "knowledge", "tar", "ice", "heater", "chimaera"], + gateRequirements: { + upgrades: ["recontainChaos"], + }, }, stone: { name: "Stone", From 98dd790270aade4bc18291ae8724780559901d04 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 11:19:25 -0500 Subject: [PATCH 02/19] Changed stylistic issues --- js/data/homeactions.js | 78 +++++++++++------------ js/data/upgrades.js | 138 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 170 insertions(+), 46 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 3bb1744f..d60676ce 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -293,8 +293,8 @@ SharkGame.HomeActions = { ], helpText: "Take a great risk in catching a jellyfish without being stung.", }, - - fakeCatchFish: { + + fakeCatchFish: { name: "Catch fish", effect: { }, @@ -302,20 +302,20 @@ SharkGame.HomeActions = { prereq: {}, outcomes: [ "Caught a fis- nevermind.", - "You fail to catch a fish.", - "The fish slips through your jaws.", + "You fail to catch a fish.", + "The fish slips through your jaws.", "The fish slips past you.", - "You catch a fish. Then it escapes from your maw.", - "Fishn't", - "The fish here feel intangible.", + "You catch a fish. Then it escapes from your maw.", + "Fishn't", + "The fish here feel intangible.", ], helpText: "Use your natural shark prowess to find and catch a fish.", }, - - catchEcho: { + + catchEcho: { name: "Catch echo", effect: { - get echo() { + get echo() { return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; }, }, @@ -323,35 +323,35 @@ SharkGame.HomeActions = { prereq: {}, outcomes: [ "Caught what used to be a fish.", - "Caught a fish shaped thing.", - "It's so nice to be able to finally catch these!", - "They're tasteless, but they're still fish... kinda?", - "Caught a fragment of potential.", - "This feels familiar somehow...", - "No escape this time, bud!", - "Caught the imprint of a fish.", - "Caught a fish.", - "These fish are kinda fishy...", - "Nothing can escape your maws now!", - "More fish-things for the snails to study!", - "Caught the memory of a fish.", - "Caught an echo.", - "Caught the absence of a fish.", - "Caught the concept of a fish.", - "Caught the fish of a fish.", - "Caught the shark of a fish.", - "Caught the desire for a fish.", - "Caught the potential for a fish.", - "Caught the catching of a fish.", - "Caught the hunger of a fish.", - "Caught the wisp of a fish.", - "Caught the of a fish", - "Caught the mind of a fish.", - "Caught the soul of a fish.", - "Caught the body of a fis- nope nevermind.", - "Caught the light of a fish.", - "Caught the chance of a fish.", - "Caught the silhouette of a fish.", + "Caught a fish shaped thing.", + "It's so nice to be able to finally catch these!", + "They're tasteless, but they're still fish... kinda?", + "Caught a fragment of potential.", + "This feels familiar somehow...", + "No escape this time, bud!", + "Caught the imprint of a fish.", + "Caught a fish.", + "These fish are kinda fishy...", + "Nothing can escape your maws now!", + "More fish-things for the snails to study!", + "Caught the memory of a fish.", + "Caught an echo.", + "Caught the absence of a fish.", + "Caught the concept of a fish.", + "Caught the fish of a fish.", + "Caught the shark of a fish.", + "Caught the desire for a fish.", + "Caught the potential for a fish.", + "Caught the catching of a fish.", + "Caught the hunger of a fish.", + "Caught the wisp of a fish.", + "Caught the of a fish", + "Caught the mind of a fish.", + "Caught the soul of a fish.", + "Caught the body of a fis- nope nevermind.", + "Caught the light of a fish.", + "Caught the chance of a fish.", + "Caught the silhouette of a fish.", ], helpText: "Catch an abstract component of a fish.", }, diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 635d5781..bb96b16e 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -511,7 +511,8 @@ SharkGame.Upgrades = { crystalContainer: {}, statsDiscovery: { cost: { science: 75 } }, underwaterChemistry: {}, - seabedGeology: {}, + seabedGeology: {effect: {incomeMultiplier: {ray: 2,}, + },}, thermalVents: { cost: { science: 500, @@ -4527,9 +4528,132 @@ SharkGame.Upgrades = { }, }, }, - chaotic: { - recontainChaos: { - name: "Recontain Chaos", + chaotic: { + molluskIdentification: { + name: "Mollusk Identification", + desc: "Some of these weird moving rocks are more vocal than others. What’s up with that?", + researchedMessage: + "Looks like we inadvertently kidnapped a bunch of “snails”. On the bright side, they don’t seem too upset about it.", + effectDesc: + "We can now recruit snails. They're a little shy, but enjoy clams.", + cost: { + clam: 5, + }, + required: { + seen: ["clam"], + }, + }, + + snailAquatences: { + name: "Snail Aquatences", + desc: "Our first meeting with the snails was a bit awkward… maybe we should try to reconcile?", + researchedMessage: + "We hardly said a word before the snails began relentlessly reassuring us that they were happy and didn’t mind what we did. At least it seems to have motivated them.", + effectDesc: + "The snails seem to want to prove themselves to us. They’ve been working twice as hard.", + cost: { + clam: 100, + }, + required: { + upgrades: ["molluskIdentification"], + seen: ["snail"], + }, + effect: { + incomeMultiplier: { + snail: 2, + }, + }, + }, + + kelpCuriosity: { + name: "Kelp Curiosity", + desc: "placeholder", + researchedMessage: + "placeholder", + effectDesc: + "placeholder", + cost: { + clam: 300, + }, + required: { + upgrades: ["molluskIdentification"], + seen: ["snail"], + }, + }, + + statsDiscovery: { required: {upgrades: ["kelpCuriosity"]]} }, + + notekeeping: { + name: "Notekeeping", + desc: "Our snails have a lot of passion, but are often too shy to share their discoveries with one another. Maybe we can find a solution?", + researchedMessage: + "Now our snails don’t have to talk to each other to share information! Finally, we can stop re-discovering the same things over and over!", + effectDesc: + "We’re now carving clam shells with our discoveries. Our scientific efforts are now more effective!", + cost: { + clam: 500, + science: 100, + }, + required: { + upgrades: ["kelpCuriosity"], + }, + }, + + currentContact: { + name: "Current Contact", + desc: "Our botanists insist that there are other physical creatures besides us. Apparently they live high above the seabed.", + researchedMessage: + "The creatures were exceptionally friendly. They call themselves turtles. They have shells like the snails, but also have fins. Weird, bumpy fins.", + effectDesc: + "After giving them a hefty amount of kelp as a greeting gift, turtles are now willing to join our frenzy.", + cost: { + kelp: 250, + science: 500, + }, + required: { + upgrades: ["kelpCuriosity"], + }, + }, + + placeholder: { + name: "placeholder", + desc: "placeholder", + researchedMessage: + "placeholder", + effectDesc: + "placeholder", + cost: { + }, + required: { + upgrades: [], + }, + }, + + seabedGeology: {}, + + thermalVents: { + cost: { + science: 500, + sand: 1000, + }, + }, + + placeholder: { + name: "placeholder", + desc: "placeholder", + researchedMessage: + "placeholder", + effectDesc: + "placeholder", + cost: { + }, + required: { + upgrades: [], + }, + }, + + recontainChaos: { + name: "Recontain Chaos", desc: "PLACEHOLDER", researchedMessage: "PLACEHOLDER", effectDesc: "PLACEHOLDER", @@ -4538,6 +4662,6 @@ SharkGame.Upgrades = { }, required: { }, - }, - }, -}; + }, + }, +}; \ No newline at end of file From 2aa9506faafdbdd1c751b7d3b176f5976cc78333 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 11:23:59 -0500 Subject: [PATCH 03/19] More style tab edits woo --- js/data/worldtypes.js | 430 ------------------------------------------ 1 file changed, 430 deletions(-) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 49f7bd35..e69de29b 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -1,430 +0,0 @@ -"use strict"; -SharkGame.WorldTypes = { - test: { - name: "Test", - desc: "You REALLY shouldn't be seeing this.", - shortDesc: "testing", - entry: "You enter a debug ocean.", - style: "default", - absentResources: [], - modifiers: [], - gateRequirements: { - slots: { - fish: 1e3, - sand: 1e3, - crystal: 1e3, - kelp: 1e3, - seaApple: 1e3, - sharkonium: 1e3, - }, - }, - }, - start: { - name: "Home", - desc: "...", - shortDesc: "strange blue", - foresight: { - longDesc: "...Home.", - missing: [], - present: [], - tip: "...", - }, - entry: "You enter a familiar blue sea, all your previous knowledge a dim memory.", - style: "default", - includedResources: ["basics", "sharks", "rays", "crabs", "basicmaterials", "kelpstuff", "sharkmachines"], - modifiers: [], - // initial gate cost, scaled by planetary level - gateRequirements: { - slots: { - fish: 1e7, - sand: 1e6, - crystal: 1e6, - kelp: 1e6, - seaApple: 5e5, - sharkonium: 8e5, - }, - }, - }, - marine: { - name: "Marine", - vagueDesc: "Feels familiar.", - desc: "A serene, blue marble.", - shortDesc: "strange blue", - foresight: { - vagueLongDesc: "This place is so familiar.", - longDesc: "A vast, blue ocean, swarming with fish.", - missing: ["laser"], - present: ["clam", "lobster"], - tip: "", - }, - entry: "You enter a serene blue sea, all your previous knowledge a dim memory.", - style: "default", - includedResources: [ - "basics", - "sharks", - "rays", - "crabs", - "lobsters", - "basicmaterials", - "kelpstuff", - "sharkmachines", - "clam", - "lobstermachines", - ], - absentResources: ["laser"], - modifiers: [{ type: "multiplier", modifier: "planetaryResourceBoost", resource: "fish", amount: 2 }], - gateRequirements: { - slots: { - fish: 1e11, - clam: 1e22, - crystal: 1e11, - kelp: 1e9, - calcinium: 1e10, - sharkonium: 1e10, - }, - }, - par: 55, - }, - haven: { - name: "Haven", - vagueDesc: "Feels lively.", - desc: "An aquamarine world of plenty. So beautiful, yet so vulnerable.", - shortDesc: "thriving aquamarine", - foresight: { - vagueLongDesc: "You can sense a lot of activity in this world.", - longDesc: "The water is clear, the sand is clean, and the fish are plenty. A paradise in every way.", - missing: ["laser", "sharkonium"], - present: ["coral", "dolphin", "whale"], - tip: "The abudance of resources might may your stay here shorter than others.", - }, - entry: "Remembering nothing, you find yourself in a beautiful atoll. Life will be good here.", - style: "haven", - includedResources: [ - "basics", - "sharks", - "rays", - "crabs", - "dolphins", - "whales", - "basicmaterials", - "kelpstuff", - "dolphinmachines", - "coral", - "chorus", - ], - absentResources: ["laser"], - modifiers: [ - { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "breeders", amount: 1 }, - { type: "multiplier", modifier: "planetaryResourceBoost", resource: "fish", amount: 1 }, - ], - gateRequirements: { resources: { chorus: 1 } }, - par: 35, - }, - tempestuous: { - name: "Tempestuous", - desc: "A swirling maelstrom where nothing rests.", - vagueDesc: "Feels turbulent.", - shortDesc: "swirling grey", - foresight: { - vagueLongDesc: "It's hard to feel out this place. Everything's constantly moving.", - longDesc: - "A terrible storm has taken up residence here. It's hard to think, much less get anything done, with all the strong currents whipping stuff around.", - missing: ["kelp", "seaApple", "crystalMiner"], - present: ["billfish", "seagrass"], - }, - entry: "You recall nothing and know only the storms. The unrelenting, restless storms scattering your possessions and allies.", - style: "tempestuous", - includedResources: [ - "basics", - "sharks", - "rays", - "crabs", - "stormgoer", - "billfishes", // gramatically awful but thats just how it is - "sharkmachines", - "basicmaterials", - "seagrass", - "chart", - "map", - ], - absentResources: ["planter", "crystalMiner"], - modifiers: [{ type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "sandDigger", amount: 24 }], - gateRequirements: { upgrades: ["cumulusControl"] }, - par: 55, - }, - volcanic: { - name: "Volcanic", - vagueDesc: "Feels hot.", - desc: "An ocean close to boiling and choking under sulphuric fumes.", - shortDesc: "searing red", - foresight: { - vagueLongDesc: "Horrible heat sears your mind from afar.", - longDesc: "Despite its seemingly inhospitable atmosphere, this world is teeming with life.", - missing: ["crystal", "shark", "kelp"], - present: ["coral", "sponge", "algae", "shrimp"], - }, - entry: "The burning waters sear the last traces of your past experiences from you. From beneath, the vents spew forth a heavy cloud of smoke.", - style: "volcanic", - includedResources: [ - "basics", - "rays", - "shoveler", - "crabs", - "curiousCrab", - "researcher", - "shrimps", - "spongeFarm", - "coralFarm", - "basicmaterials", - "porite", - "sponge", - "algae", - "coral", - ], - absentResources: ["crystal", "laser", "planter"], - modifiers: [{ type: "multiplier", modifier: "planetaryFishMultiplier", resource: "ray", amount: 15 }], - gateRequirements: { upgrades: ["apologeticAmnesty"] }, - par: 55, - }, - abandoned: { - name: "Abandoned", - vagueDesc: "Feels grimy.", - desc: "A dying world filled with machinery.", - shortDesc: "murky dark green", - foresight: { - vagueLongDesc: "This world has an aura of death and apathy.", - get longDesc() { - return ( - "The water here is dank and tinted green by " + - (gateway.isWorldBeaten("abandoned") - ? sharktext.getResourceName("tar", undefined, undefined, sharkcolor.getElementColor("pane")) + "." - : "an unrecognizable substance.") + - " Husks of machinery litter the ocean floor." - ); - }, - missing: ["seaApple", "kelp"], - present: ["octopus", "sponge", "clam", "tar"], - get tip() { - return ( - "This ocean is polluted with " + - (gateway.isWorldBeaten("abandoned") - ? sharktext.getResourceName("tar", undefined, undefined, sharkcolor.getElementColor("pane")) - : "an unrecognizable substance" + ". It is only harmful when machines produce it.") - ); - }, - }, - entry: "The water is tainted. The pungent smell snaps you awake to the lifeless landscape. You do not know who left this world so torn and empty.", - style: "abandoned", - bonus: 1, - includedResources: [ - "essence", - "sharks", - "rays", - "crabs", - "octopuses", - "basicmaterials", - "sharkmachines", - "octopusmachines", - "sponge", - "clam", - "collector", - "tar", - "filter", - "ancientPart", - "world", - "aspectAffect", - ], - absentResources: ["kelp", "seaApple", "planter"], - modifiers: [{ type: "multiplier", modifier: "planetaryIncome", resource: "tar", amount: -0.02 }], - gateRequirements: { upgrades: ["artifactAssembly"] }, - par: 45, - }, - shrouded: { - name: "Shrouded", - vagueDesc: "Feels mysterious.", - desc: "A dark, murky ocean of secrecy.", - foresight: { - vagueLongDesc: "You feel a strange power radiating from this world.", - get longDesc() { - return `This place is completely shrouded in darkness. Glowing ${sharktext.getResourceName( - "crystal", - false, - 69, - sharkcolor.getElementColor("pane"), - )} litter the water and strange figures lurk among the endless shadows.`; - }, - missing: ["kelp", "crab", "laser"], - present: ["jellyfish", "chimaera", "eel"], - }, - shortDesc: "dark mysterious", - entry: "Blackness. You know only blindness in these dark forsaken waters. Foggy memory leads you to follow a stream of crystals.", - style: "shrouded", - includedResources: [ - "essence", - "sharks", - "diver", - "rays", - "eels", - "chimaeras", - "basicmaterials", - "sharkmachines", - "arcana", - "scholar", - "jellyfish", - "sacrifice", - "aspectAffect", - ], - absentResources: ["laser"], - modifiers: [{ type: "multiplier", modifier: "planetaryIncomeReciprocalMultiplier", resource: "scientist", amount: 1 }], - gateRequirements: { - upgrades: ["arcaneActivation"], - }, - par: 50, - }, - frigid: { - name: "Frigid", - vagueDesc: "Feels chilly.", - desc: "An arctic ocean dangling on the edge of frozen doom.", - shortDesc: "freezing white", - foresight: { - vagueLongDesc: "Bitter cold stings your mind from afar.", - longDesc: "The world is mostly frozen, but a small pocket of warmer water seems to preserve what little chance life has here.", - missing: ["seaApple", "ray"], - present: ["squid", "urchin"], - get tip() { - return ( - "This world has " + - sharktext.getResourceName("ice", undefined, undefined, sharkcolor.getElementColor("pane")) + - ". " + - sharktext.getResourceName("ice", undefined, undefined, sharkcolor.getElementColor("pane")) + - " will slow some of the frenzy, and will be present from the start." - ); - }, - }, - entry: "The arctic water freezes away whatever thoughts you may have had. So cold.", - style: "frigid", - includedResources: [ - "sharks", - "crabs", - "squids", - "urchins", - "basicmaterials", - "kelp", - "sharkmachines", - "ice", - "heater", - "essence", - "world", - "aspectAffect", - ], - modifiers: [ - { - type: "multiplier", - modifier: "planetaryIncome", - resource: "ice", - amount: 1, - }, - ], - gateRequirements: { - slots: { - sand: 1e7, - crystal: 1e7, - kelp: 5e7, - heater: 40, - sharkonium: 1e6, - fish: 2e8, - }, - }, - par: 45, - }, - template: { - name: "", - desc: "description in gateway", - shortDesc: "status", - entry: "enter world", - style: "default", - absentResources: ["knowledge", "tar", "ice", "heater", "chimaera"], - modifiers: [{ type: "multiplier", modifier: "planetaryResourceBoost", resource: "fish", amount: 1.5 }], - gateType: "slots", - gateCosts: { - fish: 1, - sand: 1, - crystal: 1, - kelp: 1, - seaApple: 1, - sharkonium: 1, - }, - }, - chaotic: { - name: "Chaotic", - vagueDesc: "Feels overwhelming.", - desc: "A planet filled with ethereal, everchanging sealife.", - shortDesc: "swirling green.", - foresight: { - vagueLongDesc: "Waves of bizzare energy radiate from this world.", - longDesc: "The currents make most sealife phase in and out of reality. Plants and shelled creatures appear to be immune to this effect.", - missing: ["fish"], - present: ["snail", "turtle", "echo"], - tip: "Harnessing the energy plauging this world could be the key to fixing it. Flexability is your greatest asset.", - }, - entry: "You awake in a bizzare place, the last traces of your memories washed away by an oddly familiar force.", - style: "default", - includedResources: [""], - absentResources: ["fish", "knowledge", "tar", "ice", "heater", "chimaera"], - gateRequirements: { - upgrades: ["recontainChaos"], - }, - }, - stone: { - name: "Stone", - desc: "A world unweathered by ocean currents. It has no natural sand.", - shortDesc: "rock-bottom", - entry: "As you enter, the usual shades of green and yellow are nowhere to be found. You look down, and there's no sand: just cold, hard slate.", - style: "default", - absentResources: [ - "knowledge", - "tar", - "ice", - "heater", - "chimaera", - "dolphin", - "kelp", - "coral", - "eel", - "sandDigger", - "treasurer", - "philosopher", - "jellyfish", - ], - modifiers: [ - { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "sponge", amount: 0.5 }, - { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "shrimp", amount: 0.5 }, - { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "clamCollector", amount: 0.5 }, - { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "eggBrooder", amount: 0.5 }, - { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "sprongeSmelter", amount: 0.5 }, - { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "ray", amount: 5 }, - { type: "restriction", modifier: "planetaryGeneratorRestriction", resource: "ray", amount: "sand" }, - { - type: "restriction", - modifier: "planetaryGeneratorRestriction", - resource: "lobster", - amount: "sand", - }, - { - type: "restriction", - modifier: "planetaryGeneratorRestriction", - resource: "scavenger", - amount: "sand", - }, - ], - gateType: "slots", - gateCosts: { - gravel: 1e9, - sand: 1e6, - crystal: 1e8, - pulverizer: 2, - sponge: 1e9, - clam: 1e7, - }, - }, -}; From dca43c7aedea9bd10acf49bec86722fc0375d539 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 11:28:33 -0500 Subject: [PATCH 04/19] this time for sure --- js/data/worldtypes.js | 430 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 430 insertions(+) diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index e69de29b..45dc0c4e 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -0,0 +1,430 @@ +"use strict"; +SharkGame.WorldTypes = { + test: { + name: "Test", + desc: "You REALLY shouldn't be seeing this.", + shortDesc: "testing", + entry: "You enter a debug ocean.", + style: "default", + absentResources: [], + modifiers: [], + gateRequirements: { + slots: { + fish: 1e3, + sand: 1e3, + crystal: 1e3, + kelp: 1e3, + seaApple: 1e3, + sharkonium: 1e3, + }, + }, + }, + start: { + name: "Home", + desc: "...", + shortDesc: "strange blue", + foresight: { + longDesc: "...Home.", + missing: [], + present: [], + tip: "...", + }, + entry: "You enter a familiar blue sea, all your previous knowledge a dim memory.", + style: "default", + includedResources: ["basics", "sharks", "rays", "crabs", "basicmaterials", "kelpstuff", "sharkmachines"], + modifiers: [], + // initial gate cost, scaled by planetary level + gateRequirements: { + slots: { + fish: 1e7, + sand: 1e6, + crystal: 1e6, + kelp: 1e6, + seaApple: 5e5, + sharkonium: 8e5, + }, + }, + }, + marine: { + name: "Marine", + vagueDesc: "Feels familiar.", + desc: "A serene, blue marble.", + shortDesc: "strange blue", + foresight: { + vagueLongDesc: "This place is so familiar.", + longDesc: "A vast, blue ocean, swarming with fish.", + missing: ["laser"], + present: ["clam", "lobster"], + tip: "", + }, + entry: "You enter a serene blue sea, all your previous knowledge a dim memory.", + style: "default", + includedResources: [ + "basics", + "sharks", + "rays", + "crabs", + "lobsters", + "basicmaterials", + "kelpstuff", + "sharkmachines", + "clam", + "lobstermachines", + ], + absentResources: ["laser"], + modifiers: [{ type: "multiplier", modifier: "planetaryResourceBoost", resource: "fish", amount: 2 }], + gateRequirements: { + slots: { + fish: 1e11, + clam: 1e22, + crystal: 1e11, + kelp: 1e9, + calcinium: 1e10, + sharkonium: 1e10, + }, + }, + par: 55, + }, + haven: { + name: "Haven", + vagueDesc: "Feels lively.", + desc: "An aquamarine world of plenty. So beautiful, yet so vulnerable.", + shortDesc: "thriving aquamarine", + foresight: { + vagueLongDesc: "You can sense a lot of activity in this world.", + longDesc: "The water is clear, the sand is clean, and the fish are plenty. A paradise in every way.", + missing: ["laser", "sharkonium"], + present: ["coral", "dolphin", "whale"], + tip: "The abudance of resources might may your stay here shorter than others.", + }, + entry: "Remembering nothing, you find yourself in a beautiful atoll. Life will be good here.", + style: "haven", + includedResources: [ + "basics", + "sharks", + "rays", + "crabs", + "dolphins", + "whales", + "basicmaterials", + "kelpstuff", + "dolphinmachines", + "coral", + "chorus", + ], + absentResources: ["laser"], + modifiers: [ + { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "breeders", amount: 1 }, + { type: "multiplier", modifier: "planetaryResourceBoost", resource: "fish", amount: 1 }, + ], + gateRequirements: { resources: { chorus: 1 } }, + par: 35, + }, + tempestuous: { + name: "Tempestuous", + desc: "A swirling maelstrom where nothing rests.", + vagueDesc: "Feels turbulent.", + shortDesc: "swirling grey", + foresight: { + vagueLongDesc: "It's hard to feel out this place. Everything's constantly moving.", + longDesc: + "A terrible storm has taken up residence here. It's hard to think, much less get anything done, with all the strong currents whipping stuff around.", + missing: ["kelp", "seaApple", "crystalMiner"], + present: ["billfish", "seagrass"], + }, + entry: "You recall nothing and know only the storms. The unrelenting, restless storms scattering your possessions and allies.", + style: "tempestuous", + includedResources: [ + "basics", + "sharks", + "rays", + "crabs", + "stormgoer", + "billfishes", // gramatically awful but thats just how it is + "sharkmachines", + "basicmaterials", + "seagrass", + "chart", + "map", + ], + absentResources: ["planter", "crystalMiner"], + modifiers: [{ type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "sandDigger", amount: 24 }], + gateRequirements: { upgrades: ["cumulusControl"] }, + par: 55, + }, + volcanic: { + name: "Volcanic", + vagueDesc: "Feels hot.", + desc: "An ocean close to boiling and choking under sulphuric fumes.", + shortDesc: "searing red", + foresight: { + vagueLongDesc: "Horrible heat sears your mind from afar.", + longDesc: "Despite its seemingly inhospitable atmosphere, this world is teeming with life.", + missing: ["crystal", "shark", "kelp"], + present: ["coral", "sponge", "algae", "shrimp"], + }, + entry: "The burning waters sear the last traces of your past experiences from you. From beneath, the vents spew forth a heavy cloud of smoke.", + style: "volcanic", + includedResources: [ + "basics", + "rays", + "shoveler", + "crabs", + "curiousCrab", + "researcher", + "shrimps", + "spongeFarm", + "coralFarm", + "basicmaterials", + "porite", + "sponge", + "algae", + "coral", + ], + absentResources: ["crystal", "laser", "planter"], + modifiers: [{ type: "multiplier", modifier: "planetaryFishMultiplier", resource: "ray", amount: 15 }], + gateRequirements: { upgrades: ["apologeticAmnesty"] }, + par: 55, + }, + abandoned: { + name: "Abandoned", + vagueDesc: "Feels grimy.", + desc: "A dying world filled with machinery.", + shortDesc: "murky dark green", + foresight: { + vagueLongDesc: "This world has an aura of death and apathy.", + get longDesc() { + return ( + "The water here is dank and tinted green by " + + (gateway.isWorldBeaten("abandoned") + ? sharktext.getResourceName("tar", undefined, undefined, sharkcolor.getElementColor("pane")) + "." + : "an unrecognizable substance.") + + " Husks of machinery litter the ocean floor." + ); + }, + missing: ["seaApple", "kelp"], + present: ["octopus", "sponge", "clam", "tar"], + get tip() { + return ( + "This ocean is polluted with " + + (gateway.isWorldBeaten("abandoned") + ? sharktext.getResourceName("tar", undefined, undefined, sharkcolor.getElementColor("pane")) + : "an unrecognizable substance" + ". It is only harmful when machines produce it.") + ); + }, + }, + entry: "The water is tainted. The pungent smell snaps you awake to the lifeless landscape. You do not know who left this world so torn and empty.", + style: "abandoned", + bonus: 1, + includedResources: [ + "essence", + "sharks", + "rays", + "crabs", + "octopuses", + "basicmaterials", + "sharkmachines", + "octopusmachines", + "sponge", + "clam", + "collector", + "tar", + "filter", + "ancientPart", + "world", + "aspectAffect", + ], + absentResources: ["kelp", "seaApple", "planter"], + modifiers: [{ type: "multiplier", modifier: "planetaryIncome", resource: "tar", amount: -0.02 }], + gateRequirements: { upgrades: ["artifactAssembly"] }, + par: 45, + }, + shrouded: { + name: "Shrouded", + vagueDesc: "Feels mysterious.", + desc: "A dark, murky ocean of secrecy.", + foresight: { + vagueLongDesc: "You feel a strange power radiating from this world.", + get longDesc() { + return `This place is completely shrouded in darkness. Glowing ${sharktext.getResourceName( + "crystal", + false, + 69, + sharkcolor.getElementColor("pane"), + )} litter the water and strange figures lurk among the endless shadows.`; + }, + missing: ["kelp", "crab", "laser"], + present: ["jellyfish", "chimaera", "eel"], + }, + shortDesc: "dark mysterious", + entry: "Blackness. You know only blindness in these dark forsaken waters. Foggy memory leads you to follow a stream of crystals.", + style: "shrouded", + includedResources: [ + "essence", + "sharks", + "diver", + "rays", + "eels", + "chimaeras", + "basicmaterials", + "sharkmachines", + "arcana", + "scholar", + "jellyfish", + "sacrifice", + "aspectAffect", + ], + absentResources: ["laser"], + modifiers: [{ type: "multiplier", modifier: "planetaryIncomeReciprocalMultiplier", resource: "scientist", amount: 1 }], + gateRequirements: { + upgrades: ["arcaneActivation"], + }, + par: 50, + }, + frigid: { + name: "Frigid", + vagueDesc: "Feels chilly.", + desc: "An arctic ocean dangling on the edge of frozen doom.", + shortDesc: "freezing white", + foresight: { + vagueLongDesc: "Bitter cold stings your mind from afar.", + longDesc: "The world is mostly frozen, but a small pocket of warmer water seems to preserve what little chance life has here.", + missing: ["seaApple", "ray"], + present: ["squid", "urchin"], + get tip() { + return ( + "This world has " + + sharktext.getResourceName("ice", undefined, undefined, sharkcolor.getElementColor("pane")) + + ". " + + sharktext.getResourceName("ice", undefined, undefined, sharkcolor.getElementColor("pane")) + + " will slow some of the frenzy, and will be present from the start." + ); + }, + }, + entry: "The arctic water freezes away whatever thoughts you may have had. So cold.", + style: "frigid", + includedResources: [ + "sharks", + "crabs", + "squids", + "urchins", + "basicmaterials", + "kelp", + "sharkmachines", + "ice", + "heater", + "essence", + "world", + "aspectAffect", + ], + modifiers: [ + { + type: "multiplier", + modifier: "planetaryIncome", + resource: "ice", + amount: 1, + }, + ], + gateRequirements: { + slots: { + sand: 1e7, + crystal: 1e7, + kelp: 5e7, + heater: 40, + sharkonium: 1e6, + fish: 2e8, + }, + }, + par: 45, + }, + template: { + name: "", + desc: "description in gateway", + shortDesc: "status", + entry: "enter world", + style: "default", + absentResources: ["knowledge", "tar", "ice", "heater", "chimaera"], + modifiers: [{ type: "multiplier", modifier: "planetaryResourceBoost", resource: "fish", amount: 1.5 }], + gateType: "slots", + gateCosts: { + fish: 1, + sand: 1, + crystal: 1, + kelp: 1, + seaApple: 1, + sharkonium: 1, + }, + }, + chaotic: { + name: "Chaotic", + vagueDesc: "Feels overwhelming.", + desc: "A planet filled with ethereal, everchanging sealife.", + shortDesc: "swirling green.", + foresight: { + vagueLongDesc: "Waves of bizzare energy radiate from this world.", + longDesc: "The currents make most sealife phase in and out of reality. Plants and shelled creatures appear to be immune to this effect.", + missing: ["fish"], + present: ["snail", "turtle", "echo"], + tip: "Harnessing the energy plauging this world could be the key to fixing it. Flexability is your greatest asset.", + }, + entry: "You awake in a bizzare place, the last traces of your memories washed away by an oddly familiar force.", + style: "default", + includedResources: [""], + absentResources: ["fish", "knowledge", "tar", "ice", "heater", "chimaera"], + gateRequirements: { + upgrades: ["recontainChaos"], + }, + }, + stone: { + name: "Stone", + desc: "A world unweathered by ocean currents. It has no natural sand.", + shortDesc: "rock-bottom", + entry: "As you enter, the usual shades of green and yellow are nowhere to be found. You look down, and there's no sand: just cold, hard slate.", + style: "default", + absentResources: [ + "knowledge", + "tar", + "ice", + "heater", + "chimaera", + "dolphin", + "kelp", + "coral", + "eel", + "sandDigger", + "treasurer", + "philosopher", + "jellyfish", + ], + modifiers: [ + { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "sponge", amount: 0.5 }, + { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "shrimp", amount: 0.5 }, + { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "clamCollector", amount: 0.5 }, + { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "eggBrooder", amount: 0.5 }, + { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "sprongeSmelter", amount: 0.5 }, + { type: "multiplier", modifier: "planetaryIncomeMultiplier", resource: "ray", amount: 5 }, + { type: "restriction", modifier: "planetaryGeneratorRestriction", resource: "ray", amount: "sand" }, + { + type: "restriction", + modifier: "planetaryGeneratorRestriction", + resource: "lobster", + amount: "sand", + }, + { + type: "restriction", + modifier: "planetaryGeneratorRestriction", + resource: "scavenger", + amount: "sand", + }, + ], + gateType: "slots", + gateCosts: { + gravel: 1e9, + sand: 1e6, + crystal: 1e8, + pulverizer: 2, + sponge: 1e9, + clam: 1e7, + }, + }, +}; From 4eadab4e9bbc20607249670b2f2dd177efcc95b9 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 11:36:47 -0500 Subject: [PATCH 05/19] Fixed syntax error --- js/data/resourcetable.js | 256 +++++++++++++++++++-------------------- 1 file changed, 128 insertions(+), 128 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 8c258e7b..58795c05 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1244,136 +1244,136 @@ SharkGame.ResourceTable = { }, */ //chaotic - - snail: { - name: "sea snails", - singleName: "sea snail", - color: "#F6E7A7", - desc: "Shy, yet full of potential.", - income: { - clam: 1, - }, - jobs: [ - "snailBotanist", - "snailGeologist", - "snailMalacologst" - ], - value: 1000, - }, - - snailBotanist: { - name: "snail botanists", - singleName: "snail botanist", - color: "#BED8A7", //change when art's done - desc: "Dedicated to the science of plants.", - income: { - science: 0.25, - kelp: 0.2, - }, - value: 5000, - }, - - snailGeologist: { - name: "snail geologists", - singleName: "snail geologist", - color: "#A3CAE4", //change when art's done - desc: "Endlessly fascinated by rocks.", - income: { - science: 0.25, - crystal: 0.5, - }, - value: 5000, - }, - - snailMalacologist: { - name: "snail malacologists", - singleName: "snail malacologist", - color: "#E1B167", //change when art's done - desc: "The introspective sort.", - income: { - science: 0.25, - snail: 0.05, - }, - value: 5000, - }, - - turtle: { - name: "turtles", - singleName: "turtle", - color: "#6CB46E", //change when art's done - desc: "Travelers along the flow.", - income: { - kelp: 1, - sand: 2, - }, - jobs: [ - ], - value: 4000, - }, - - turtleLocator: { - name: "turtle locators", - singleName: "turtle locator", - color: "#82DB48", //change when art's done - desc: "Taking responsibility.", - income: { - turtle: 0.1, - }, - value: 8000, - }, - - turtleSweeper: { - name: "turtle sweepers", - singleName: "turtle sweeper", - color: "#73BA9D", //change when art's done - desc: "Taking a cursory interest in the seafloor.", - income: { - sand: 0.75 - crystal: 0.75 - }, - value: 6000, - }, - - echo: { //gains production from toggles - name: "echos", - singleName: "echo", - color: "#9CC6A5", //change when art's done - desc: "Many, yet one.", - value: 5000, - }, - - wisp: { - name: "wisps", - singleName: "wisp", - color: "#66DEAF", - desc: "A heavily diluted form of essence.", - value: 2, - }, - - wispCumulator: { - name: "wisp cumulators", - singleName: "wisp cumulator", - color: "#3EBD6C", //change when art's done - desc: "Filters wisps from the ocean currents.", - income: { - wisp: 400, - get crystal() { + + snail: { + name: "sea snails", + singleName: "sea snail", + color: "#F6E7A7", + desc: "Shy, yet full of potential.", + income: { + clam: 1, + }, + jobs: [ + "snailBotanist", + "snailGeologist", + "snailMalacologst" + ], + value: 1000, + }, + + snailBotanist: { + name: "snail botanists", + singleName: "snail botanist", + color: "#BED8A7", //change when art's done + desc: "Dedicated to the science of plants.", + income: { + science: 0.25, + kelp: 0.2, + }, + value: 5000, + }, + + snailGeologist: { + name: "snail geologists", + singleName: "snail geologist", + color: "#A3CAE4", //change when art's done + desc: "Endlessly fascinated by rocks.", + income: { + science: 0.25, + crystal: 0.5, + }, + value: 5000, + }, + + snailMalacologist: { + name: "snail malacologists", + singleName: "snail malacologist", + color: "#E1B167", //change when art's done + desc: "The introspective sort.", + income: { + science: 0.25, + snail: 0.05, + }, + value: 5000, + }, + + turtle: { + name: "turtles", + singleName: "turtle", + color: "#6CB46E", //change when art's done + desc: "Travelers along the flow.", + income: { + kelp: 1, + sand: 2, + }, + jobs: [ + ], + value: 4000, + }, + + turtleLocator: { + name: "turtle locators", + singleName: "turtle locator", + color: "#82DB48", //change when art's done + desc: "Taking responsibility.", + income: { + turtle: 0.1, + }, + value: 8000, + }, + + turtleSweeper: { + name: "turtle sweepers", + singleName: "turtle sweeper", + color: "#73BA9D", //change when art's done + desc: "Taking a cursory interest in the seafloor.", + income: { + sand: 0.75, + crystal: 0.75, + }, + value: 6000, + }, + + echo: { //gains production from toggles + name: "echos", + singleName: "echo", + color: "#9CC6A5", //change when art's done + desc: "Many, yet one.", + value: 5000, + }, + + wisp: { + name: "wisps", + singleName: "wisp", + color: "#66DEAF", + desc: "A heavily diluted form of essence.", + value: 2, + }, + + wispCumulator: { + name: "wisp cumulators", + singleName: "wisp cumulator", + color: "#3EBD6C", //change when art's done + desc: "Filters wisps from the ocean currents.", + income: { + wisp: 400, + get crystal() { return -30 + 15 * SharkGame.Aspects.mechanicalManifestation.level; }, - }, - value: 70000, - }, - - echoBeacon: { - name: "echo beacons", - singleName: "echo beacon", - color: "#8CBDBC", //change when art's done - desc: "Singing a song out towards infinity.", - income: { - echo: 1, - }, - value: 70000, - }, + }, + value: 70000, + }, + + echoBeacon: { + name: "echo beacons", + singleName: "echo beacon", + color: "#8CBDBC", //change when art's done + desc: "Singing a song out towards infinity.", + income: { + echo: 1, + }, + value: 70000, + }, }; SharkGame.GeneratorIncomeAffectorsOriginal = { From 333d824a1ef724a7fec623801d06a286b2c084c9 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 11:39:42 -0500 Subject: [PATCH 06/19] Adding spaces to comments and adding a missing trailing comma --- js/data/resourcetable.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 58795c05..b3e6316d 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1242,8 +1242,8 @@ SharkGame.ResourceTable = { }, value: 180000, // 250 sharkonium, 250 gravel (18000) }, */ - - //chaotic + + // chaotic snail: { name: "sea snails", @@ -1256,7 +1256,7 @@ SharkGame.ResourceTable = { jobs: [ "snailBotanist", "snailGeologist", - "snailMalacologst" + "snailMalacologst", ], value: 1000, }, @@ -1264,7 +1264,7 @@ SharkGame.ResourceTable = { snailBotanist: { name: "snail botanists", singleName: "snail botanist", - color: "#BED8A7", //change when art's done + color: "#BED8A7", // change when art's done desc: "Dedicated to the science of plants.", income: { science: 0.25, @@ -1276,7 +1276,7 @@ SharkGame.ResourceTable = { snailGeologist: { name: "snail geologists", singleName: "snail geologist", - color: "#A3CAE4", //change when art's done + color: "#A3CAE4", // change when art's done desc: "Endlessly fascinated by rocks.", income: { science: 0.25, @@ -1288,7 +1288,7 @@ SharkGame.ResourceTable = { snailMalacologist: { name: "snail malacologists", singleName: "snail malacologist", - color: "#E1B167", //change when art's done + color: "#E1B167", // change when art's done desc: "The introspective sort.", income: { science: 0.25, @@ -1300,7 +1300,7 @@ SharkGame.ResourceTable = { turtle: { name: "turtles", singleName: "turtle", - color: "#6CB46E", //change when art's done + color: "#6CB46E", // change when art's done desc: "Travelers along the flow.", income: { kelp: 1, @@ -1314,7 +1314,7 @@ SharkGame.ResourceTable = { turtleLocator: { name: "turtle locators", singleName: "turtle locator", - color: "#82DB48", //change when art's done + color: "#82DB48", // change when art's done desc: "Taking responsibility.", income: { turtle: 0.1, @@ -1325,7 +1325,7 @@ SharkGame.ResourceTable = { turtleSweeper: { name: "turtle sweepers", singleName: "turtle sweeper", - color: "#73BA9D", //change when art's done + color: "#73BA9D", // change when art's done desc: "Taking a cursory interest in the seafloor.", income: { sand: 0.75, @@ -1334,10 +1334,10 @@ SharkGame.ResourceTable = { value: 6000, }, - echo: { //gains production from toggles + echo: { // gains production from toggles name: "echos", singleName: "echo", - color: "#9CC6A5", //change when art's done + color: "#9CC6A5", // change when art's done desc: "Many, yet one.", value: 5000, }, @@ -1353,7 +1353,7 @@ SharkGame.ResourceTable = { wispCumulator: { name: "wisp cumulators", singleName: "wisp cumulator", - color: "#3EBD6C", //change when art's done + color: "#3EBD6C", // change when art's done desc: "Filters wisps from the ocean currents.", income: { wisp: 400, @@ -1367,7 +1367,7 @@ SharkGame.ResourceTable = { echoBeacon: { name: "echo beacons", singleName: "echo beacon", - color: "#8CBDBC", //change when art's done + color: "#8CBDBC", // change when art's done desc: "Singing a song out towards infinity.", income: { echo: 1, From 0766b61461d66f3ccc0ed04da76e13ff7c72c017 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 11:41:18 -0500 Subject: [PATCH 07/19] removed trailing spaces --- 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 b3e6316d..abe9a047 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1242,7 +1242,7 @@ SharkGame.ResourceTable = { }, value: 180000, // 250 sharkonium, 250 gravel (18000) }, */ - + // chaotic snail: { From 7bf95772a029ed2bf976da6443294d9b649ceee6 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 11:42:25 -0500 Subject: [PATCH 08/19] removed more trailing spaces ;-; --- 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 abe9a047..8065019d 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1242,7 +1242,7 @@ SharkGame.ResourceTable = { }, value: 180000, // 250 sharkonium, 250 gravel (18000) }, */ - + // chaotic snail: { From 7bf902c31993cab12de31d54a1d3d003dc31d9f7 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 11:44:42 -0500 Subject: [PATCH 09/19] Single ] removal, prob a better way to do this --- js/data/upgrades.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index bb96b16e..e38e1f94 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4581,7 +4581,7 @@ SharkGame.Upgrades = { }, }, - statsDiscovery: { required: {upgrades: ["kelpCuriosity"]]} }, + statsDiscovery: { required: {upgrades: ["kelpCuriosity"]} }, notekeeping: { name: "Notekeeping", From a2c2e0dcdd17e748dcfe488684beaa7d8c1ac0dd Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 12:13:38 -0500 Subject: [PATCH 10/19] more style fixes --- js/data/upgrades.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index e38e1f94..fd23edc1 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -511,8 +511,7 @@ SharkGame.Upgrades = { crystalContainer: {}, statsDiscovery: { cost: { science: 75 } }, underwaterChemistry: {}, - seabedGeology: {effect: {incomeMultiplier: {ray: 2,}, - },}, + seabedGeology: { effect: { incomeMultiplier: { ray: 2 }, }, }, thermalVents: { cost: { science: 500, @@ -4580,8 +4579,8 @@ SharkGame.Upgrades = { seen: ["snail"], }, }, - - statsDiscovery: { required: {upgrades: ["kelpCuriosity"]} }, + + statsDiscovery: { required: { upgrades: ["kelpCuriosity"] } }, notekeeping: { name: "Notekeeping", @@ -4597,7 +4596,7 @@ SharkGame.Upgrades = { required: { upgrades: ["kelpCuriosity"], }, - }, + }, currentContact: { name: "Current Contact", @@ -4613,7 +4612,7 @@ SharkGame.Upgrades = { required: { upgrades: ["kelpCuriosity"], }, - }, + }, placeholder: { name: "placeholder", @@ -4627,7 +4626,7 @@ SharkGame.Upgrades = { required: { upgrades: [], }, - }, + }, seabedGeology: {}, @@ -4637,7 +4636,7 @@ SharkGame.Upgrades = { sand: 1000, }, }, - + placeholder: { name: "placeholder", desc: "placeholder", From f7b90803ebd0c7b3f858cbbd43977b88cea9aea6 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 12:17:58 -0500 Subject: [PATCH 11/19] More smol things --- 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 fd23edc1..6ed1467d 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -511,7 +511,7 @@ SharkGame.Upgrades = { crystalContainer: {}, statsDiscovery: { cost: { science: 75 } }, underwaterChemistry: {}, - seabedGeology: { effect: { incomeMultiplier: { ray: 2 }, }, }, + seabedGeology: { effect: { incomeMultiplier: { ray: 2 } } }, thermalVents: { cost: { science: 500, @@ -4637,20 +4637,20 @@ SharkGame.Upgrades = { }, }, - placeholder: { - name: "placeholder", - desc: "placeholder", + placeholder2: { + name: "placeholder2", + desc: "placeholder2", researchedMessage: - "placeholder", + "placeholder2", effectDesc: - "placeholder", + "placeholder2", cost: { }, required: { upgrades: [], }, }, - + recontainChaos: { name: "Recontain Chaos", desc: "PLACEHOLDER", @@ -4663,4 +4663,4 @@ SharkGame.Upgrades = { }, }, }, -}; \ No newline at end of file +}; From aebeeeb534458ddb24cd43b955f6ea63dc86bd9f Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 20 Dec 2025 12:20:35 -0500 Subject: [PATCH 12/19] please let this be the last one for now --- js/data/upgrades.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 6ed1467d..63e2a024 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4649,7 +4649,7 @@ SharkGame.Upgrades = { required: { upgrades: [], }, - }, + }, recontainChaos: { name: "Recontain Chaos", From 27bd6c16039f0e8fe32b4ac9964de3f8519e17a7 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Thu, 15 Jan 2026 11:41:22 -0500 Subject: [PATCH 13/19] Progressed introducing core resources for Chaotic ocean into game. --- js/data/homeactions.js | 129 ++++++++++++++++++++------------------- js/data/resourcetable.js | 25 +++++--- js/data/worldtypes.js | 2 +- 3 files changed, 85 insertions(+), 71 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index d60676ce..a8aacae5 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -294,68 +294,6 @@ SharkGame.HomeActions = { helpText: "Take a great risk in catching a jellyfish without being stung.", }, - fakeCatchFish: { - name: "Catch fish", - effect: { - }, - cost: {}, - prereq: {}, - outcomes: [ - "Caught a fis- nevermind.", - "You fail to catch a fish.", - "The fish slips through your jaws.", - "The fish slips past you.", - "You catch a fish. Then it escapes from your maw.", - "Fishn't", - "The fish here feel intangible.", - ], - helpText: "Use your natural shark prowess to find and catch a fish.", - }, - - catchEcho: { - name: "Catch echo", - effect: { - get echo() { - return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; - }, - }, - cost: {}, - prereq: {}, - outcomes: [ - "Caught what used to be a fish.", - "Caught a fish shaped thing.", - "It's so nice to be able to finally catch these!", - "They're tasteless, but they're still fish... kinda?", - "Caught a fragment of potential.", - "This feels familiar somehow...", - "No escape this time, bud!", - "Caught the imprint of a fish.", - "Caught a fish.", - "These fish are kinda fishy...", - "Nothing can escape your maws now!", - "More fish-things for the snails to study!", - "Caught the memory of a fish.", - "Caught an echo.", - "Caught the absence of a fish.", - "Caught the concept of a fish.", - "Caught the fish of a fish.", - "Caught the shark of a fish.", - "Caught the desire for a fish.", - "Caught the potential for a fish.", - "Caught the catching of a fish.", - "Caught the hunger of a fish.", - "Caught the wisp of a fish.", - "Caught the of a fish", - "Caught the mind of a fish.", - "Caught the soul of a fish.", - "Caught the body of a fis- nope nevermind.", - "Caught the light of a fish.", - "Caught the chance of a fish.", - "Caught the silhouette of a fish.", - ], - helpText: "Catch an abstract component of a fish.", - }, - // CONVERSIONS //////////////////////////////////////////////////////////////////////////////// seaApplesToScience: { @@ -4651,6 +4589,71 @@ SharkGame.HomeActions = { }, }, }, + chaotic: { + fakeCatchFish: { + name: "Catch fish", + effect: { + }, + cost: {}, + prereq: {}, + outcomes: [ + "Caught a fis- nevermind.", + "You fail to catch a fish.", + "The fish slips through your jaws.", + "The fish slips past you.", + "You catch a fish. Then it escapes from your maw.", + "Fishn't", + "The fish here feel intangible.", + ], + helpText: "Use your natural shark prowess to find and catch a fish.", + }, + + catchWisp: { + name: "Catch wisp", + effect: { + resource: { + get wisp() { + return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; + }, + }, + }, + cost: {}, + prereq: {}, + outcomes: [ + "Caught what used to be a fish.", + "Caught a fish shaped thing.", + "It's so nice to be able to finally catch these!", + "They're tasteless, but they're still fish... kinda?", + "Caught a fragment of potential.", + "This feels familiar somehow...", + "No escape this time, bud!", + "Caught the imprint of a fish.", + "Caught a fish.", + "These fish are kinda fishy...", + "Nothing can escape your maws now!", + "More fish-things for the snails to study!", + "Caught the memory of a fish.", + "Caught an echo.", + "Caught the absence of a fish.", + "Caught the concept of a fish.", + "Caught the fish of a fish.", + "Caught the shark of a fish.", + "Caught the desire for a fish.", + "Caught the potential for a fish.", + "Caught the catching of a fish.", + "Caught the hunger of a fish.", + "Caught the wisp of a fish.", + "Caught the of a fish", + "Caught the mind of a fish.", + "Caught the soul of a fish.", + "Caught the body of a fis- nope nevermind.", + "Caught the light of a fish.", + "Caught the chance of a fish.", + "Caught the silhouette of a fish.", + ], + helpText: "Catch an abstract component of a fish.", + }, + }, }; SharkGame.HomeActionCategories = { @@ -4662,7 +4665,7 @@ SharkGame.HomeActionCategories = { basic: { name: "Basic", - actions: ["catchFish", "debugbutton", "prySponge", "prySponge2", "getClam", "getJellyfish"], + actions: ["catchFish", "debugbutton", "prySponge", "prySponge2", "getClam", "getJellyfish", "fakeCatchFish", "catchWisp"], }, frenzy: { diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 8065019d..0db9c781 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1256,7 +1256,7 @@ SharkGame.ResourceTable = { jobs: [ "snailBotanist", "snailGeologist", - "snailMalacologst", + "snailMalacologist", ], value: 1000, }, @@ -1354,7 +1354,7 @@ SharkGame.ResourceTable = { name: "wisp cumulators", singleName: "wisp cumulator", color: "#3EBD6C", // change when art's done - desc: "Filters wisps from the ocean currents.", + desc: "Filters wisps from the ocean currents using crystals.", income: { wisp: 400, get crystal() { @@ -1573,7 +1573,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", "echo", "snail", "turtle"], }, animals: { name: "Animals", @@ -1586,7 +1586,7 @@ SharkGame.ResourceCategories = { "Do you think the aim of the game is to make the numbers go DOWN?!", "Sure hope you know what you're doing here.", ], - resources: ["fish", "seaApple", "sponge", "jellyfish", "clam"], + resources: ["fish", "seaApple", "sponge", "jellyfish", "clam", "wisp"], }, stuff: { name: "Materials", @@ -1631,7 +1631,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", "snailMalacologist", "turtleLocator"], }, specialists: { name: "Specialists", @@ -1667,6 +1667,9 @@ SharkGame.ResourceCategories = { "billfishExplorer", "billfishMechanic", "stormgoer", + "snailBotanist", + "snailGeologist", + "turtleSweeper", // "prospector", // "shoveler", // "miller", @@ -1699,6 +1702,8 @@ SharkGame.ResourceCategories = { "clamScavenger", "seabedStripper", "calciniumConverter", + "echoBeacon", + "wispCumulator", // "coalescer", // "crusher", // "pulverizer", @@ -1781,7 +1786,7 @@ SharkGame.InternalCategories = { }, sharkmachines: { name: "Shark Machines", - resources: ["sharkonium", "fishMachine", "sandDigger", "crystalMiner", "skimmer", "autoTransmuter"], + resources: ["sharkonium", "fishMachine", "sandDigger", "crystalMiner", "skimmer", "autoTransmuter", "echoBeacon", "wispCumulator"], }, dolphinmachines: { name: "Dolphin Machines", @@ -1796,11 +1801,17 @@ SharkGame.InternalCategories = { resources: ["calcinium", "seabedStripper", "calciniumConverter", "clamScavenger"], }, basicmaterials: { - resources: ["fish", "sand", "crystal", "science", "junk"], + resources: ["fish", "sand", "crystal", "science", "junk", "wisp"], }, kelpstuff: { resources: ["kelp", "seaApple"], }, + snails: { + resources: ["snail", "snailBotanist", "snailMalacologist", "snailGeologist"], + }, + turtles: { + resources: ["turtle", "turtleLocator", "turtleSweeper"], + }, basics: { resources: ["essence", "world", "aspectAffect", "specialResourceOne", "specialResourceTwo"], }, diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 45dc0c4e..2e638b24 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -365,7 +365,7 @@ SharkGame.WorldTypes = { longDesc: "The currents make most sealife phase in and out of reality. Plants and shelled creatures appear to be immune to this effect.", missing: ["fish"], present: ["snail", "turtle", "echo"], - tip: "Harnessing the energy plauging this world could be the key to fixing it. Flexability is your greatest asset.", + tip: "Harnessing the energy plaguing this world could be the key to fixing it. Flexibility is your greatest asset.", }, entry: "You awake in a bizzare place, the last traces of your memories washed away by an oddly familiar force.", style: "default", From bc614aa27283fc8a41a3e2c8efaa3de021826b78 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sat, 17 Jan 2026 15:39:42 -0500 Subject: [PATCH 14/19] Implimented chaotic world selection from gateway, and opening fake catch fish option turning into get clam. --- js/data/homeactions.js | 67 ++++++++++++++++++++++++++++++++++------ js/data/homemessages.js | 16 ++++++++++ js/data/resourcetable.js | 34 ++++++++++++-------- js/data/sprites.js | 16 ++++++++++ js/data/upgrades.js | 10 +++--- js/data/worldtypes.js | 25 ++++++++++++--- js/gateway.js | 2 +- 7 files changed, 137 insertions(+), 33 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index a8aacae5..4da21be6 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4589,10 +4589,18 @@ SharkGame.HomeActions = { }, }, }, - chaotic: { - fakeCatchFish: { + chaotic: { + fakeCatchFish: { name: "Catch fish", effect: { + resource: { + get fakeFish(){ + return 1; + }, + }, + }, + removedBy: { + otherActions: ["getClam"], }, cost: {}, prereq: {}, @@ -4607,18 +4615,59 @@ SharkGame.HomeActions = { ], helpText: "Use your natural shark prowess to find and catch a fish.", }, + getClam: { + name: "Get clam", + effect: { + resource: { + get clam() { + return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; + }, + }, + }, + cost: {}, + prereq: { + resource: { + fakeFish: 3, + }, + }, + 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: "Fetch a clam. Why do we need clams now? Who knows.", + }, catchWisp: { name: "Catch wisp", effect: { - resource: { - get wisp() { - return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; - }, - }, + resource: { + get wisp() { + return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; + }, + }, }, cost: {}, - prereq: {}, + prereq: { + upgrade: ["sharkoniumBiteGear"] + }, outcomes: [ "Caught what used to be a fish.", "Caught a fish shaped thing.", @@ -4653,7 +4702,7 @@ SharkGame.HomeActions = { ], helpText: "Catch an abstract component of a fish.", }, - }, + }, }; SharkGame.HomeActionCategories = { diff --git a/js/data/homemessages.js b/js/data/homemessages.js index e3f57386..6ccafccd 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -515,6 +515,22 @@ SharkGame.HomeMessages = { message: "A wave of heat washes over you, and the dingy complex comes back to life. The gate turns on.", }, ], + chaotic: [ + { + name: "chaotic-default", + message: "The fish here don’t even notice your presence. They appear to phase in and out of existence periodically.", + }, + { + name: "chaotic-fishfail", + unlock: { totalResource: { fakeFish: 1 } }, + message: "You attempt to catch a fish, but your jaws harmlessly phase through its body.", + }, + { + name: "chaotic-findclam", + unlock: { totalResource: { fakeFish: 3 } }, + message: "You spot some weird rock things moving in the distance. If you can’t catch any fish, maybe you can at least catch… those.", + }, + ], /* { message: diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 0db9c781..c08fa538 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1245,6 +1245,14 @@ SharkGame.ResourceTable = { // chaotic + fakeFish: { + name: "fish", + singleName: "fish", + desc: "The hunted.", + color: "#E3D85B", + value: 2, + }, + snail: { name: "sea snails", singleName: "sea snail", @@ -1667,9 +1675,9 @@ SharkGame.ResourceCategories = { "billfishExplorer", "billfishMechanic", "stormgoer", - "snailBotanist", - "snailGeologist", - "turtleSweeper", + "snailBotanist", + "snailGeologist", + "turtleSweeper", // "prospector", // "shoveler", // "miller", @@ -1702,8 +1710,8 @@ SharkGame.ResourceCategories = { "clamScavenger", "seabedStripper", "calciniumConverter", - "echoBeacon", - "wispCumulator", + "echoBeacon", + "wispCumulator", // "coalescer", // "crusher", // "pulverizer", @@ -1786,7 +1794,7 @@ SharkGame.InternalCategories = { }, sharkmachines: { name: "Shark Machines", - resources: ["sharkonium", "fishMachine", "sandDigger", "crystalMiner", "skimmer", "autoTransmuter", "echoBeacon", "wispCumulator"], + resources: ["sharkonium", "fishMachine", "sandDigger", "crystalMiner", "skimmer", "autoTransmuter"], }, dolphinmachines: { name: "Dolphin Machines", @@ -1801,17 +1809,17 @@ SharkGame.InternalCategories = { resources: ["calcinium", "seabedStripper", "calciniumConverter", "clamScavenger"], }, basicmaterials: { - resources: ["fish", "sand", "crystal", "science", "junk", "wisp"], + resources: ["fish", "sand", "crystal", "science", "junk"], }, kelpstuff: { resources: ["kelp", "seaApple"], }, - snails: { - resources: ["snail", "snailBotanist", "snailMalacologist", "snailGeologist"], - }, - turtles: { - resources: ["turtle", "turtleLocator", "turtleSweeper"], - }, + snails: { + resources: ["snail", "snailBotanist", "snailMalacologist", "snailGeologist"], + }, + turtles: { + resources: ["turtle", "turtleLocator", "turtleSweeper"], + }, basics: { resources: ["essence", "world", "aspectAffect", "specialResourceOne", "specialResourceTwo"], }, diff --git a/js/data/sprites.js b/js/data/sprites.js index 0a4a991d..ccba6bb8 100644 --- a/js/data/sprites.js +++ b/js/data/sprites.js @@ -77,6 +77,14 @@ SharkGame.Sprites = { y: 0, w: 50, h: 50, + "actions/fakeCatchFish": { + frame: { + x: 300, + y: 0, + w: 50, + h: 50, + }, + }, }, }, "actions/forgeSpronge": { @@ -1903,4 +1911,12 @@ SharkGame.Sprites = { h: 50, }, }, + "actions/fakeCatchFish": { + frame: { + x: 300, + y: 0, + w: 50, + h: 50, + }, + }, }; diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 63e2a024..f8c64cfb 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4637,13 +4637,13 @@ SharkGame.Upgrades = { }, }, - placeholder2: { - name: "placeholder2", - desc: "placeholder2", + sharkoniumBiteGear: { + name: "Sharkonium Bite-Gear", + desc: "The snails eagerly discuss the idea of collecting the faded fish swimming around. They say they just need some time and materials.", researchedMessage: - "placeholder2", + "We were given some kind of bite implant and told to go try and catch fish. We’re unsure how this is supposed to help, but we might as well try.", effectDesc: - "placeholder2", + "We’re able to catch the fish floating around! We can’t eat them yet, but it’s a start!", cost: { }, required: { diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 2e638b24..99ffcf43 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -363,17 +363,32 @@ SharkGame.WorldTypes = { foresight: { vagueLongDesc: "Waves of bizzare energy radiate from this world.", longDesc: "The currents make most sealife phase in and out of reality. Plants and shelled creatures appear to be immune to this effect.", - missing: ["fish"], - present: ["snail", "turtle", "echo"], + missing: ["fish","shark","ray","crab"], + present: ["snail", "turtle", "echo", "wisp"], tip: "Harnessing the energy plaguing this world could be the key to fixing it. Flexibility is your greatest asset.", }, entry: "You awake in a bizzare place, the last traces of your memories washed away by an oddly familiar force.", - style: "default", - includedResources: [""], - absentResources: ["fish", "knowledge", "tar", "ice", "heater", "chimaera"], + style: "haven", //to be changed + includedResources: [ + "wisp", + "echo", + "snails", + "turtles", + "clam", + "sharkmachines", + "essence", + "echoBeacon", + "wispCumulator", + "basicmaterials", + "fakeFish", + "world", + "aspectAffect", + ], + absentResources: ["fish"], gateRequirements: { upgrades: ["recontainChaos"], }, + par: 50, //Adjust later }, stone: { name: "Stone", diff --git a/js/gateway.js b/js/gateway.js index 090f7c23..4d0a8cfc 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", "chaotic"], completedWorlds: [], From e030db083930d63c9ca7dcac8cad38e32450bd59 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sun, 18 Jan 2026 16:31:22 -0500 Subject: [PATCH 15/19] Progressed on tech for Chaotic Ocean --- js/data/homeactions.js | 191 +++++++++++++++++++++++++++- js/data/homemessages.js | 15 +++ js/data/modifiertypes.js | 30 +++++ js/data/resourcetable.js | 14 +-- js/data/upgrades.js | 266 +++++++++++++++++++++++++++++++++------ js/data/worldtypes.js | 3 +- js/tabs/lab.js | 2 + 7 files changed, 475 insertions(+), 46 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 4da21be6..c8a75b54 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4654,7 +4654,9 @@ SharkGame.HomeActions = { ], helpText: "Fetch a clam. Why do we need clams now? Who knows.", }, - + + pearlConversion: { cost: [ { resource: "clam", costFunction: "constant", priceIncrease: 5 }, ], }, + catchWisp: { name: "Catch wisp", effect: { @@ -4702,6 +4704,188 @@ SharkGame.HomeActions = { ], helpText: "Catch an abstract component of a fish.", }, + getSnail: { + name: "Recruit sea snail", + effect: { + resource: { + snail: 1, + }, + }, + cost: [{ resource: "clam", costFunction: "linear", priceIncrease: 5 },], + max: "snail", + prereq: { upgrade: ["molluskIdentification"], }, + outcomes: [ + "A sea snail joins you.", + ], + multiOutcomes: [ + "Some sea snails join you.", + ], + helpText: "Figure out which of these shells are actually snails.", + }, + getTurtle: { + name: "Recruit sea turtle", + effect: { + resource: { + turtle: 1, + }, + }, + cost: [{ resource: "kelp", costFunction: "linear", priceIncrease: 15 },], + max: "turtle", + prereq: { upgrade: ["currentContact"], }, + outcomes: [ + "A sea turtle joins you.", + "Recruited a tortoise.", + ], + multiOutcomes: [ + "Some sea turtles join you.", + ], + helpText: "Convince a turtle to do something other then aimless wandering.", + }, + + //snail jobs + getSnailBotanist: { + name: "Encourage snail botanist", + effect: { + resource: { + snailBotanist: 1, + }, + }, + cost: [ + { resource: "snail", costFunction: "constant", priceIncrease: 1 }, + { resource: "clam", costFunction: "linear", priceIncrease: 15 }, + ], + max: "snailBotanist", + prereq: { upgrade: ["kelpCuriosity"], }, + outcomes: [ + "A snail discovers a new obsession. For kelp.", + "Surely kelp can't be THIS interesting, right?", + "Once you get them talking, they just don't stop...", + "What do the snails get out of this?", + "Surely there's science in this.", + "The mysteries of the kelp shall be untangled!", + "You don't understand what's so interesting about kelp, but you're happy for the snails.", + "Their passion for kelp never fails to impress you.", + ], + multiOutcomes: [ + "Kelp kelp kelp kelp.", + "How do so many snails care about this stuff?", + "An army of snails descends upon the kelp.", + "Trails of snail slime cover our piles of kelp.", + "They shall march upon the kelp with gusto.", + "Our snails shall blot out the kelp!", + ], + helpText: "Encourage a snail to explore their interest in kelp.", + }, + + getSnailGeologist: { + name: "Encourage snail geologist", + effect: { + resource: { + snailGeologist: 1, + }, + }, + cost: [ + { resource: "snail", costFunction: "constant", priceIncrease: 1 }, + { resource: "sand", costFunction: "linear", priceIncrease: 10 }, + ], + max: "snailGeologist", + prereq: { upgrade: ["seabedGeology"], }, + outcomes: [ + "A snail discovers a new obsession. For kelp.", + ], + multiOutcomes: [ + "Kelp kelp kelp kelp.", + "How do so many snails care about this stuff?", + ], + helpText: "Help a snail express themselves through the science of rocks.", + }, + + getSnailMalacologist: { + name: "Encourage snail malacologist", + effect: { + resource: { + snailMalacologist: 1, + }, + }, + cost: [ + { resource: "snail", costFunction: "constant", priceIncrease: 1 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 10 }, + ], + max: "snailMalacologist", + prereq: { upgrade: ["biology"], }, + outcomes: [ + "Placeholder.", + ], + multiOutcomes: [ + "Placeholders.", + ], + helpText: "Help a snail find their inner self.", + }, + + //turtle jobs + getTurtleLocator: { + name: "Assign turtle locator", + effect: { + resource: { + turtleLocator: 1, + }, + }, + cost: [ + { resource: "turtle", costFunction: "constant", priceIncrease: 1 }, + { resource: "kelp", costFunction: "linear", priceIncrease: 40 }, + ], + max: "turtleLocator", + prereq: { upgrade: ["biology"], }, + outcomes: [ + "Placeholder.", + ], + multiOutcomes: [ + "Placeholders.", + ], + helpText: "Convince a turtle to care about their children.", + }, + getTurtleSweeper: { + name: "Convince turtle locator", + effect: { + resource: { + turtleLocator: 1, + }, + }, + cost: [ + { resource: "turtle", costFunction: "constant", priceIncrease: 1 }, + { resource: "kelp", costFunction: "linear", princeIncrease: 20 ), + { resource: "crystal", costFunction: "linear", priceIncrease: 20 }, + ], + max: "turtleLocator", + prereq: { upgrade: ["biology"], }, + outcomes: [ + "Placeholder.", + ], + multiOutcomes: [ + "Placeholders.", + ], + helpText: "Convince a turtle to pick up a new hobby regarding things on the seafloor.", + }, + + transmuteSharkonium: { + 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 sh- uh... snail frenzy!", + ], + }, + + getCrystalMiner: {}, + + getSandDigger: {}, }, }; @@ -4733,6 +4917,8 @@ SharkGame.HomeActionCategories = { "getSquid", "getUrchin", "getBillfish", + "getSnail", + "getTurtle", ], }, @@ -4767,6 +4953,9 @@ SharkGame.HomeActionCategories = { "getBillfishExplorer", "getBillfishMechanic", "getStormgoer", + "getSnailBotanist", + "getSnailGeologist", + "getSnailMalacologist", ], }, diff --git a/js/data/homemessages.js b/js/data/homemessages.js index 6ccafccd..01ea7100 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -530,6 +530,21 @@ SharkGame.HomeMessages = { unlock: { totalResource: { fakeFish: 3 } }, message: "You spot some weird rock things moving in the distance. If you can’t catch any fish, maybe you can at least catch… those.", }, + { + name: "chaotic-snail", + unlock: { totalResource: { snail: 1 } }, + message: "The snails are eager to please, but retreat into their shells at the slightest hint of danger. They do their best to smile.", + }, + { + name: "chaotic-snailbotanist", + unlock: { totalResource: { snailBotanist: 1 } }, + message: "The botanists eagerly chatter about all things kelp. They talk about sightings of non-snail creatures eating kelp.", + }, + { + name: "chaotic-turtle", + unlock: { totalResource: { turtle: 1 } }, + message: "The turtles drift wherever the current takes them. They seem surprised to see a shelless creature who hasn’t “faded”. Their words, not ours.", + }, ], /* { diff --git a/js/data/modifiertypes.js b/js/data/modifiertypes.js index 1144ddcf..c6838ff4 100644 --- a/js/data/modifiertypes.js +++ b/js/data/modifiertypes.js @@ -382,6 +382,36 @@ SharkGame.ModifierTypes = { // this applies to base income so it should never be reapplied return input; }, + }, + addSnailIncome: { + 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.snail = (baseIncomes.snail ? baseIncomes.snail : 0) + degree; + res.reapplyModifiers(resource, "snail"); + return current + degree; + }, + effectDescription(degree, resource, background) { + return `Add ${degree} ${sharktext.getResourceName("snail", false, false, background)}/s to ${sharktext.getResourceName( + resource, + false, + 69, + background, + )}`; + }, + getEffect(_genDegree, _outDegree, _gen, _out) { + return 1; + }, + applyToInput(input, _genDegree, _outDegree, _gen, _out) { + // this applies to base income so it should never be reapplied + return input; + }, }, }, }, diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index c08fa538..32cfb43d 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1275,7 +1275,7 @@ SharkGame.ResourceTable = { color: "#BED8A7", // change when art's done desc: "Dedicated to the science of plants.", income: { - science: 0.25, + science: 0.05, kelp: 0.2, }, value: 5000, @@ -1287,7 +1287,7 @@ SharkGame.ResourceTable = { color: "#A3CAE4", // change when art's done desc: "Endlessly fascinated by rocks.", income: { - science: 0.25, + science: 0.05, crystal: 0.5, }, value: 5000, @@ -1299,8 +1299,7 @@ SharkGame.ResourceTable = { color: "#E1B167", // change when art's done desc: "The introspective sort.", income: { - science: 0.25, - snail: 0.05, + science: 0.05, }, value: 5000, }, @@ -1336,8 +1335,8 @@ SharkGame.ResourceTable = { color: "#73BA9D", // change when art's done desc: "Taking a cursory interest in the seafloor.", income: { - sand: 0.75, - crystal: 0.75, + clam: 3, + crystal: 3, }, value: 6000, }, @@ -1639,7 +1638,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", "snailMalacologist", "turtleLocator"], + resources: ["nurse", "maker", "brood", "queen", "berrier", "biologist", "pit", "collective", "spawner", "billfishPair", "turtleLocator"], }, specialists: { name: "Specialists", @@ -1677,6 +1676,7 @@ SharkGame.ResourceCategories = { "stormgoer", "snailBotanist", "snailGeologist", + "snailMalacologist", "turtleSweeper", // "prospector", // "shoveler", diff --git a/js/data/upgrades.js b/js/data/upgrades.js index f8c64cfb..59f6be11 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4546,10 +4546,8 @@ SharkGame.Upgrades = { snailAquatences: { name: "Snail Aquatences", desc: "Our first meeting with the snails was a bit awkward… maybe we should try to reconcile?", - researchedMessage: - "We hardly said a word before the snails began relentlessly reassuring us that they were happy and didn’t mind what we did. At least it seems to have motivated them.", - effectDesc: - "The snails seem to want to prove themselves to us. They’ve been working twice as hard.", + researchedMessage: "We hardly said a word before the snails began relentlessly reassuring us that they were happy and didn’t mind what we did. At least it seems to have motivated them.", + effectDesc: "The snails seem to want to prove themselves to us. They’ve been working twice as hard.", cost: { clam: 100, }, @@ -4566,13 +4564,13 @@ SharkGame.Upgrades = { kelpCuriosity: { name: "Kelp Curiosity", - desc: "placeholder", + desc: "We’ve noticed that some snails stare at the green stuff on the floor in fascination. We should support our new friends' interests.", researchedMessage: - "placeholder", + "It seemed that the snails were worried that we’d make fun of them for wanting to study the green things. Now that we’ve shown our support, they’re jumping at the opportunity!", effectDesc: - "placeholder", + "Snails can now specialise in something they call botany. We don’t understand what it is, but are happy to see them happy.", cost: { - clam: 300, + clam: 200, }, required: { upgrades: ["molluskIdentification"], @@ -4580,63 +4578,255 @@ SharkGame.Upgrades = { }, }, - statsDiscovery: { required: { upgrades: ["kelpCuriosity"] } }, + statsDiscovery: { required: { upgrades: ["kelpCuriosity"], } }, notekeeping: { name: "Notekeeping", desc: "Our snails have a lot of passion, but are often too shy to share their discoveries with one another. Maybe we can find a solution?", - researchedMessage: - "Now our snails don’t have to talk to each other to share information! Finally, we can stop re-discovering the same things over and over!", - effectDesc: - "We’re now carving clam shells with our discoveries. Our scientific efforts are now more effective!", + researchedMessage: "Now our snails don’t have to talk to each other to share information! Finally, we can stop re-discovering the same things over and over!", + effectDesc: "We’re now carving clam shells with our discoveries. Our scientific efforts are now more effective!", cost: { - clam: 500, - science: 100, + clam: 450, + science: 50, }, required: { upgrades: ["kelpCuriosity"], + }, + effect: { + resourceBoost: { + science: 2, + }, }, }, - + currentContact: { name: "Current Contact", desc: "Our botanists insist that there are other physical creatures besides us. Apparently they live high above the seabed.", - researchedMessage: - "The creatures were exceptionally friendly. They call themselves turtles. They have shells like the snails, but also have fins. Weird, bumpy fins.", - effectDesc: - "After giving them a hefty amount of kelp as a greeting gift, turtles are now willing to join our frenzy.", + researchedMessage: "The creatures were exceptionally friendly. They call themselves turtles. They have shells like the snails, but also have fins. Weird, bumpy fins.", + effectDesc: "After giving them a hefty amount of kelp as a greeting gift, turtles are now willing to join our frenzy.", cost: { - kelp: 250, - science: 500, + kelp: 100, }, required: { upgrades: ["kelpCuriosity"], + seen: ["kelp"], }, }, - - placeholder: { - name: "placeholder", - desc: "placeholder", + + seabedGeology: { + name: "Seabed Geology", + desc: "Some snails stand in awe as the turtles kick up things from the seabed. Maybe we could encourage those snails like we did with the botanists?", + reserchedMessage: "Turns out that some snails are, like, REALLY into rocks. They were even able to find some shiny rocks. Good for them.", + effectDesc: "Our new understanding of the seabed helps our turtle friends kick up more stuff. Also, some snails have expressed interest in geology.", + cost: { + sand: 400, + }, + required: { + upgrades: ["currentContact"], + seen: ["turtle"], + }, + effect: { + incomeMultiplier: { + turtle: 2, + }, + }, + }, + + thermalVents: { + name: "Thermal Vents", + desc: "Our geologists are excited about an area where the rocks are hotter. They want supplies to go out and investigate.", + reserchedMessage: "The snails found an endless well of heat! Also, the turtles told us that \"faded\" creatures tend to congregate towards heat.", + effectDesc: "Well we can’t really do much with it at the moment, but we found a large well of heat. Surely it’ll be helpful later.", + cost: { + science: 750, + sand: 1000, + }, + required: { + upgrades: ["seabedGeology"], + }, + }, + + pearlConversion: { + name: "Pearl Conversion", + desc: "We somtimes find these shiny things inside of clams. The lobsters say they can use them?", researchedMessage: - "placeholder", + "Well, we can transmute what are called 'pearls' into crystals now, though we also need the rest of the clam, too. (yes, the entire clam)", effectDesc: - "placeholder", + "We can turn clams into crystals using the 'pearls' inside them as a focus. Maybe one day we won't need to use the whole clam.", cost: { + science: 1000, + clam: 500, + crystal: 100, }, required: { - upgrades: [], + upgrades: ["thermalVents"], }, }, - - seabedGeology: {}, - - thermalVents: { + + 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: 500, - sand: 1000, + science: 350, + crystal: 100, + }, + effect: { + resourceBoost: { + science: 2, + }, + }, + required: { + seen: ["crystal"], }, }, - + + 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: 800, + crystal: 500, + }, + required: { + upgrades: ["crystalContainer"], + }, + effect: { + resourceBoost: { + science: 2, + }, + }, + }, + + 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! Our geologists named it sharkonium in honour of those who inspired them.", + 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"], + }, + }, + + agriculture: {}, + + sunObservation: { + name: "Sun Observation", + desc: "Our turtles periodiclly disappear near the surface of the water. Why? Is it due to that weird glare?", + researchedMessage: "Snail science has discovered the sun! Apparently it has nothing to do with the turtle's disappearences, but our botanists are thrilled!", + effectDesc: + "Our methods of gaining kelp are twice as effective. What is a sun? We can see a sun, but where is it really? And what is it made of?", + cost: { + science: 7500, + }, + required: { + upgrades: ["agriculture"], + }, + effect: { + resourceBoost { + kelp: 2, + }, + }, + }, + + biology: { + name: "Biology", + desc: "What are we? What makes us different from the snails and turtles?", + researchedMessage: "While the turtles were dismissive of our findings regarding our shark-ness, some snails seem to now be interested in their own biology.", + effectDesc: + "Snails can now partake in the science of… snails? We're not entirely sure what the end goal is.", + cost: { + science: 1000, + }, + required: { + upgrades: ["underwaterChemistry", "agriculture"], + }, + effect: { + incomeMultiplier: { + snail: 2, + turtle: 2, + }, + }, + }, + + snailBiology: { + name: "Snail Biology", + desc: "Our snail studying snails want to learn even more about snails. Might as well help them.", + researchedMessage: "The malacologists eagerly reported their findings regarding the inner working of snails. We didn't understand any of it, but their research seems to be producing more snails.", + effectDesc: "The science of snails now results in more snails. Hurrah!", + cost: { + science: 2500, + clam: 500, + }, + required: { + upgrades: ["biology"], + seen: ["snailMalacologist"], + }, + effect: { + incomeMultiplier: { + snail: 2, + }, + addSnailIncome: { + snailMalacologist: 0.4, + }, + }, + }, + + turtleBiology: { + name: "Turtle Biology", + desc: "Where do turtles come from anyways? It seems as if they just appear out of thin air!", + researchedMessage: "Apparently when turtles just abandon their eggs somewhere near the surface of the water! How can they be that carefree about their young?", + effectDesc: "We can now assign turtles to go rally up any baby turtles that managed to make it into the ocean.", + cost: { + science: 5000, + kelp: 2500, + }, + required: { + upgrades: ["biology", "sunObservation"], + }, + effect: { + incomeMultiplier: { + turtle: 2, + }, + }, + }, + hyperfixationCommunication: { + name: "Hyperfixation Communication", + desc: "Sometimes, our snails will blab to us about their ‘special interest’ for hours at a time. Maybe they could teach the turtles something new?", + researchedMessage: "We’d secretly hoped that our turtles would be motivated by the snails, but they’re as carefree as ever. At least some turtles seem to have picked up new hobbies.", + effectDesc: "Turtles can now specialise in seabed sweeping to find rocky things like crystals or clams.", + cost: { + science: 5000, + kelp: 2500, + }, + required: { + upgrades: ["sunObservation"], + }, + effect: {}, + } + sharkoniumBiteGear: { name: "Sharkonium Bite-Gear", desc: "The snails eagerly discuss the idea of collecting the faded fish swimming around. They say they just need some time and materials.", @@ -4645,12 +4835,14 @@ SharkGame.Upgrades = { effectDesc: "We’re able to catch the fish floating around! We can’t eat them yet, but it’s a start!", cost: { + science: 7500, + sharkonium: 1000 }, required: { upgrades: [], }, }, - + recontainChaos: { name: "Recontain Chaos", desc: "PLACEHOLDER", diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 99ffcf43..f30ab113 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -368,13 +368,14 @@ SharkGame.WorldTypes = { tip: "Harnessing the energy plaguing this world could be the key to fixing it. Flexibility is your greatest asset.", }, entry: "You awake in a bizzare place, the last traces of your memories washed away by an oddly familiar force.", - style: "haven", //to be changed + style: "chaotic", includedResources: [ "wisp", "echo", "snails", "turtles", "clam", + "kelp", "sharkmachines", "essence", "echoBeacon", diff --git a/js/tabs/lab.js b/js/tabs/lab.js index 099997eb..0c6dd77a 100644 --- a/js/tabs/lab.js +++ b/js/tabs/lab.js @@ -33,6 +33,8 @@ SharkGame.Lab = { switch (world.worldType) { case "tempestuous": return { resource: { crab: 5 } }; + case "chaotic": + return { resource: { clam: 1 } }; default: return { resource: { science: 10 } }; } From 436ff2ccbe101f70693586a9f2cf223543d1c527 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Mon, 19 Jan 2026 09:54:14 -0500 Subject: [PATCH 16/19] Fixed syntax error and added a new tech --- js/data/homeactions.js | 16 +++++++++------- js/data/homemessages.js | 5 +++++ js/data/upgrades.js | 31 ++++++++++++++++++++++++++----- js/data/worldtypes.js | 2 +- 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index c8a75b54..95bd255a 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4835,7 +4835,7 @@ SharkGame.HomeActions = { { resource: "kelp", costFunction: "linear", priceIncrease: 40 }, ], max: "turtleLocator", - prereq: { upgrade: ["biology"], }, + prereq: { upgrade: ["turtleBiology"], }, outcomes: [ "Placeholder.", ], @@ -4845,19 +4845,19 @@ SharkGame.HomeActions = { helpText: "Convince a turtle to care about their children.", }, getTurtleSweeper: { - name: "Convince turtle locator", + name: "Convince turtle sweeper", effect: { resource: { - turtleLocator: 1, + turtleSweeper: 1, }, }, cost: [ { resource: "turtle", costFunction: "constant", priceIncrease: 1 }, - { resource: "kelp", costFunction: "linear", princeIncrease: 20 ), + { resource: "kelp", costFunction: "linear", priceIncrease: 20 }, { resource: "crystal", costFunction: "linear", priceIncrease: 20 }, ], - max: "turtleLocator", - prereq: { upgrade: ["biology"], }, + max: "turtleSweeper", + prereq: { upgrade: ["hyperfixationCommunication"], }, outcomes: [ "Placeholder.", ], @@ -4866,7 +4866,6 @@ SharkGame.HomeActions = { ], helpText: "Convince a turtle to pick up a new hobby regarding things on the seafloor.", }, - transmuteSharkonium: { outcomes: [ "Transmutation destination!", @@ -4886,6 +4885,7 @@ SharkGame.HomeActions = { getCrystalMiner: {}, getSandDigger: {}, + }, }; @@ -4956,6 +4956,7 @@ SharkGame.HomeActionCategories = { "getSnailBotanist", "getSnailGeologist", "getSnailMalacologist", + "getTurtleSweeper", ], }, @@ -4973,6 +4974,7 @@ SharkGame.HomeActionCategories = { "getCollective", "getSpawner", "getBillfishPair", + "getTurtleLocator", ], }, diff --git a/js/data/homemessages.js b/js/data/homemessages.js index 01ea7100..b63b6871 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -545,6 +545,11 @@ SharkGame.HomeMessages = { unlock: { totalResource: { turtle: 1 } }, message: "The turtles drift wherever the current takes them. They seem surprised to see a shelless creature who hasn’t “faded”. Their words, not ours.", }, + { + name: "chaotic-turtlehelpless", + unlock: { upgrade: ["hyperfixationCommunication",] }, + message: "The turtles recall a time where they believed the faded sealife could be saved. Their failures led them to be resigned to their fate.", + }, ], /* { diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 59f6be11..7a49824c 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4745,7 +4745,7 @@ SharkGame.Upgrades = { upgrades: ["agriculture"], }, effect: { - resourceBoost { + resourceBoost: { kelp: 2, }, }, @@ -4818,14 +4818,36 @@ SharkGame.Upgrades = { researchedMessage: "We’d secretly hoped that our turtles would be motivated by the snails, but they’re as carefree as ever. At least some turtles seem to have picked up new hobbies.", effectDesc: "Turtles can now specialise in seabed sweeping to find rocky things like crystals or clams.", cost: { - science: 5000, - kelp: 2500, + science: 7500, + kelp: 6000, + sand: 10000, }, required: { upgrades: ["sunObservation"], }, effect: {}, - } + }, + + rekindledHope: { + name: "Rekindled Hope", + desc: "Learning about the turtle’s history seems to have ignited something within the snails.", + researchedMessage: "The snails believe that even if there’s no way to revert what has happened to the faded creatures, they still have to try their best to find a solution. The turtles tell them it’s a waste of effort.", + effectDesc: "Our scientists are determined to save those who have faded, doubling their productivity.", + cost: { + science: 10000, + clam: 5000, + }, + required: { + upgrades: ["biology", "hyperfixationCommunication"], + }, + effect: { + incomeMultiplier: { + snailBotanist: 2, + snailGeologist: 2, + snailMalacologist: 2, + }, + }, + }, sharkoniumBiteGear: { name: "Sharkonium Bite-Gear", @@ -4842,7 +4864,6 @@ SharkGame.Upgrades = { upgrades: [], }, }, - recontainChaos: { name: "Recontain Chaos", desc: "PLACEHOLDER", diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index f30ab113..eb0aa0cf 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -359,7 +359,7 @@ SharkGame.WorldTypes = { name: "Chaotic", vagueDesc: "Feels overwhelming.", desc: "A planet filled with ethereal, everchanging sealife.", - shortDesc: "swirling green.", + shortDesc: "swirling green", foresight: { vagueLongDesc: "Waves of bizzare energy radiate from this world.", longDesc: "The currents make most sealife phase in and out of reality. Plants and shelled creatures appear to be immune to this effect.", From 68a8e8a47c4c7be3f3a2dfe2476237fa03fbf423 Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Sun, 25 Jan 2026 10:56:03 -0500 Subject: [PATCH 17/19] Changed turtle sweepers into turtle transporters, and made a bunch of balance changes. --- js/data/homeactions.js | 68 ++++++++++--- js/data/homemessages.js | 14 ++- js/data/resourcetable.js | 35 ++++--- js/data/upgrades.js | 209 ++++++++++++++++++++++++++++++++++++--- js/data/worldtypes.js | 2 +- js/gateway.js | 10 ++ js/tabs/gate.js | 1 + 7 files changed, 295 insertions(+), 44 deletions(-) diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 95bd255a..066d225c 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4832,7 +4832,7 @@ SharkGame.HomeActions = { }, cost: [ { resource: "turtle", costFunction: "constant", priceIncrease: 1 }, - { resource: "kelp", costFunction: "linear", priceIncrease: 40 }, + { resource: "kelp", costFunction: "linear", priceIncrease: 60 }, ], max: "turtleLocator", prereq: { upgrade: ["turtleBiology"], }, @@ -4844,27 +4844,35 @@ SharkGame.HomeActions = { ], helpText: "Convince a turtle to care about their children.", }, - getTurtleSweeper: { - name: "Convince turtle sweeper", + getturtleTransporter: { + name: "Organize turtle transporter", effect: { resource: { - turtleSweeper: 1, + turtleTransporter: 1, }, }, cost: [ { resource: "turtle", costFunction: "constant", priceIncrease: 1 }, - { resource: "kelp", costFunction: "linear", priceIncrease: 20 }, - { resource: "crystal", costFunction: "linear", priceIncrease: 20 }, + { resource: "kelp", costFunction: "linear", priceIncrease: 500 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 25 }, ], - max: "turtleSweeper", + max: "turtleTransporter", prereq: { upgrade: ["hyperfixationCommunication"], }, outcomes: [ - "Placeholder.", + "Route set and ready!", + "This should speed things up.", + "Turtle equipped and ready to swim.", + "I wonder what hyperfixations the snails will blush about to this one.", + "A snail is about to experience speeds previously unknown to them." ], multiOutcomes: [ - "Placeholders.", + "Ah, the wonders of public transportation!", + "Look out for traffic.", + "The currents become even more congested.", + "We'll need more bus stops at this rate!", + "Look two ways before crossing the seabed.", ], - helpText: "Convince a turtle to pick up a new hobby regarding things on the seafloor.", + helpText: "Get a turtle ready to help transport snails around.", }, transmuteSharkonium: { outcomes: [ @@ -4886,6 +4894,43 @@ SharkGame.HomeActions = { getSandDigger: {}, + getAutoTransmuter: {}, + + getEcho: { + name: "Bind echo", + effect: { + resource: { + echo: 1, + }, + }, + cost: [ + { resource: "wisp", costFunction: "linear", priceIncrease: 10 }, + { resource: "sharkonium", costFunction: "constant", priceIncrease: 20 }, + ], + max: "echo", + prereq: { upgrade: ["sharkoniumHarnesses"], }, + outcomes: [ + "An echo returns to their senses.", + "They will need some time to adjust to their new minds.", + "A singular multitude.", + "A... shark joins you?", + "A... ray joins you?", + "A... crab joins you?", + "Potential harnessed.", + "Countless voices emerge from the echo.", + "They do not understand what they are. We don't understand either.", + "A turtle recognizes this one, but they're different now.", + "Do they want to be bound?", + ], + multiOutcomes: [ + "A multitude of multitudes.", + "Their smiling faces are unfamiliar, yet sorrowful.", + "A typhoon of possibilities joins you.", + "Forever echoing out into infinity.", + "Who will they be today?", + ], + helpText: "Build a harness able to somewhat pull faded sealife back to reality.", + }, }, }; @@ -4919,6 +4964,7 @@ SharkGame.HomeActionCategories = { "getBillfish", "getSnail", "getTurtle", + "getEcho", ], }, @@ -4956,7 +5002,7 @@ SharkGame.HomeActionCategories = { "getSnailBotanist", "getSnailGeologist", "getSnailMalacologist", - "getTurtleSweeper", + "getturtleTransporter", ], }, diff --git a/js/data/homemessages.js b/js/data/homemessages.js index b63b6871..f83e95da 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -543,12 +543,22 @@ SharkGame.HomeMessages = { { name: "chaotic-turtle", unlock: { totalResource: { turtle: 1 } }, - message: "The turtles drift wherever the current takes them. They seem surprised to see a shelless creature who hasn’t “faded”. Their words, not ours.", + message: "The turtles drift wherever the current takes them. They seem surprised to see a shelless creature who hasn’t 'faded'. Their words, not ours.", }, { name: "chaotic-turtlehelpless", unlock: { upgrade: ["hyperfixationCommunication",] }, - message: "The turtles recall a time where they believed the faded sealife could be saved. Their failures led them to be resigned to their fate.", + message: "The turtles speak of a visitor who once gave them false hope. They say you're doing the same to the snails.", + }, + { + name: "chaotic-ruins", + unlock: { upgrade: ["chaosTriangulation",] }, + message: "Ruined machines lay half-buried in sand, in the distance swirls a massive storm of energy that the turtles say can fade even shelled creatures.", + }, + { + name: "chaotic-turtlehope", + unlock: { upgrade: ["resurfacedHope",] }, + message: "The snails remind the turtles of how they once were. They want to believe again, to not mindlessly drift towards oblivion.", }, ], /* diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 32cfb43d..de3e57d8 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1275,7 +1275,7 @@ SharkGame.ResourceTable = { color: "#BED8A7", // change when art's done desc: "Dedicated to the science of plants.", income: { - science: 0.05, + science: 0.02, kelp: 0.2, }, value: 5000, @@ -1287,7 +1287,7 @@ SharkGame.ResourceTable = { color: "#A3CAE4", // change when art's done desc: "Endlessly fascinated by rocks.", income: { - science: 0.05, + science: 0.02, crystal: 0.5, }, value: 5000, @@ -1299,7 +1299,7 @@ SharkGame.ResourceTable = { color: "#E1B167", // change when art's done desc: "The introspective sort.", income: { - science: 0.05, + science: 0.02, }, value: 5000, }, @@ -1311,7 +1311,7 @@ SharkGame.ResourceTable = { desc: "Travelers along the flow.", income: { kelp: 1, - sand: 2, + sand: 1, }, jobs: [ ], @@ -1324,29 +1324,31 @@ SharkGame.ResourceTable = { color: "#82DB48", // change when art's done desc: "Taking responsibility.", income: { - turtle: 0.1, + turtle: 0.04, }, value: 8000, }, - turtleSweeper: { - name: "turtle sweepers", - singleName: "turtle sweeper", + turtleTransporter: { + name: "turtle transporters", + singleName: "turtle transporter", color: "#73BA9D", // change when art's done desc: "Taking a cursory interest in the seafloor.", - income: { - clam: 3, - crystal: 3, + multiply: { + snail: 0.01, }, value: 6000, }, - echo: { // gains production from toggles + echo: { // changes production from toggles name: "echos", singleName: "echo", color: "#9CC6A5", // change when art's done desc: "Many, yet one.", value: 5000, + income: { + wisp: 1, + }, }, wisp: { @@ -1441,6 +1443,11 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { sandDigger: 0.01, fishMachine: 0.01, }, + }, + turtleTransporter: { + multiply: { + snail: 0.01, + }, }, // cool tooltip test crab /* crab: { @@ -1677,7 +1684,7 @@ SharkGame.ResourceCategories = { "snailBotanist", "snailGeologist", "snailMalacologist", - "turtleSweeper", + "turtleTransporter", // "prospector", // "shoveler", // "miller", @@ -1818,7 +1825,7 @@ SharkGame.InternalCategories = { resources: ["snail", "snailBotanist", "snailMalacologist", "snailGeologist"], }, turtles: { - resources: ["turtle", "turtleLocator", "turtleSweeper"], + resources: ["turtle", "turtleLocator", "turtleTransporter"], }, basics: { resources: ["essence", "world", "aspectAffect", "specialResourceOne", "specialResourceTwo"], diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 7a49824c..130827c5 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4644,6 +4644,11 @@ SharkGame.Upgrades = { required: { upgrades: ["seabedGeology"], }, + effect: { + incomeMultiplier: { + snailGeologist: 2, + }, + }, }, pearlConversion: { @@ -4730,7 +4735,13 @@ SharkGame.Upgrades = { }, }, - agriculture: {}, + agriculture: { + effect: { + incomeMultiplier: { + snailBotanist: 2, + }, + }, + }, sunObservation: { name: "Sun Observation", @@ -4789,7 +4800,7 @@ SharkGame.Upgrades = { snail: 2, }, addSnailIncome: { - snailMalacologist: 0.4, + snailMalacologist: 0.02, }, }, }, @@ -4801,7 +4812,7 @@ SharkGame.Upgrades = { effectDesc: "We can now assign turtles to go rally up any baby turtles that managed to make it into the ocean.", cost: { science: 5000, - kelp: 2500, + kelp: 5000, }, required: { upgrades: ["biology", "sunObservation"], @@ -4812,33 +4823,46 @@ SharkGame.Upgrades = { }, }, }, + hyperfixationCommunication: { name: "Hyperfixation Communication", - desc: "Sometimes, our snails will blab to us about their ‘special interest’ for hours at a time. Maybe they could teach the turtles something new?", - researchedMessage: "We’d secretly hoped that our turtles would be motivated by the snails, but they’re as carefree as ever. At least some turtles seem to have picked up new hobbies.", - effectDesc: "Turtles can now specialise in seabed sweeping to find rocky things like crystals or clams.", + desc: "The snails and turtles don't know eachother too well. We should introduce them.", + researchedMessage: "The turtles seemed to enjoy the (mostly one-sided) conversations with the snails. They're letting snails ride on their backs now, just to hear more.", + effectDesc: "Turtles can now specialize in snail transportation. This will significantly speed up the snails.", cost: { science: 7500, - kelp: 6000, - sand: 10000, + crystal: 60000, + }, + required: { + upgrades: ["sunObservation"], + }, + }, + + turtleHistory: { + name: "Turtle History", + desc: "So... the turtles have really long lives, have they really just been drifting around all this time?", + researchedMessage: "When the fadding began, the turtles did their best to find a solution, but failed. Now they've just accepted things as they are.", + effectDesc: "Those tales were sad ones... many people who the turtles cared about were lost to the fadding.", + cost: { + science: 8000, + kelp: 70000, }, required: { upgrades: ["sunObservation"], }, - effect: {}, }, - rekindledHope: { - name: "Rekindled Hope", + unitedDetermination: { + name: "United Determination", desc: "Learning about the turtle’s history seems to have ignited something within the snails.", researchedMessage: "The snails believe that even if there’s no way to revert what has happened to the faded creatures, they still have to try their best to find a solution. The turtles tell them it’s a waste of effort.", effectDesc: "Our scientists are determined to save those who have faded, doubling their productivity.", cost: { science: 10000, - clam: 5000, + clam: 800000, }, required: { - upgrades: ["biology", "hyperfixationCommunication"], + upgrades: ["biology", "turtleHistory"], }, effect: { incomeMultiplier: { @@ -4849,6 +4873,107 @@ SharkGame.Upgrades = { }, }, + exploration: { + name: "Exploration", + desc: "Carry the snails beyond the home seas to see what can be found!", + researchedMessage: "We found large schools of creatures who had faded to the currents. The turtles enjoy having extra space to swim in.", + effectDesc: "With more ocean to drift through, the moral of our turtles has increased!", + cost: { + science: 10000, + kelp: 50000, + }, + required: { + upgrades: ["sunObservation"], + }, + effect: { + incomeMultiplier: { + turtle: 2, + }, + }, + }, + engineering: { + effect: { + incomeMultiplier: { + crystalMiner: 2, + sandDigger: 2, + }, + }, + }, + chaosTriangulation: { + name: "Chaos Triangulation", + desc: "Our top snails claim to have a lead regarding the cause of the fadding, they'd like to be taken somewhere.", + researchedMessage: "The place is littered with the dilapidated remains of machines we've never seen before. Apparently the turtles knew of this place the whole time. Some help they were.", + effectDesc: "Our scientist snails are hard at work studying the ruins. The rest are working hard to support them.", + cost: { + science: 50000, + crystal: 125000, + }, + required: { + upgrades: ["exploration", "unitedDetermination"], + }, + effect: { + incomeMultiplier: { + snail: 4, + }, + resourceBoost: { + science: 4, + }, + }, + }, + turtleInterrogation: { + name: "Turtle Interrogation", + desc: "Okay, so the turtles knew about these ruins all along? Surely they have to know SOMETHING.", + researchedMessage: "The turtles told us that this place holds the source of the fadding. Whatever past they had here, it brings about bad memories.", + effectDesc: "There is still much to coax out of the turtles about the fadding, but this will have to do for now.", + cost: { + science: 170000, + kelp: 20000, + }, + required: { + upgrades: ["chaosTriangulation"], + }, + effect: {}, + }, + steepedSharonium: { + name: "Steeped Sharkonium", + desc: "The material these machines are made of is similar to sharkonium, but different somehow. Investigation is needed.", + researchedMessage: "Turns out that sharkonium that's fused here gains unique properties? Something to do with the 'chaos energy' being highly concentrated in this area?", + effectDesc: "Supposedly, our sharkonium is better now. I don't know, ask the snails.", + cost: { + science: 200000, + crystal: 10000, + sand: 10000, + }, + required: { + upgrades: ["chaosTriangulation"], + seen: ["sharkonium"], + }, + effect: { + incomeMultiplier: { + crystalMiner: 2, + sandDigger: 2, + }, + }, + }, + resurfacedHope: { + name: "Resurfaced Hope", + desc: "The turtles may try to be emotionaly detached from those around them, but we can see the small glimmer of hope within them.", + researchedMessage: "The turtles admitted that they wanted to hope again. More and more turtles join the snail's search for a solution.", + effectDesc: "With our turtles actually invested in our succsess, their efficiency has skyrocketed.", + cost: { + science: 200000, + kelp: 20000, + }, + required: { + upgrades: ["turtleInterrogation"], + }, + effect: { + incomeMultiplier: { + turtle: 4, + turtleLocator: 4, + }, + }, + }, sharkoniumBiteGear: { name: "Sharkonium Bite-Gear", desc: "The snails eagerly discuss the idea of collecting the faded fish swimming around. They say they just need some time and materials.", @@ -4857,13 +4982,65 @@ SharkGame.Upgrades = { effectDesc: "We’re able to catch the fish floating around! We can’t eat them yet, but it’s a start!", cost: { - science: 7500, - sharkonium: 1000 + science: 250000, + sharkonium: 200000, + }, + required: { + upgrades: ["steepedSharonium", "resurfacedHope"], + }, + }, + + chaosStormGear: { + name: "Chaos Storm Gear", + desc: "With our new material, our turtles believe they could develop gear to reach the center of the chaos energy storm, but it will take a lot of sacrifice.", + researchedMessage: + "Countless turtles threw their lives to the fading just for a chance at hope... we can't let their sacrifice go to waste.", + effectDesc: + "Thousands of turtles succummed to the fading, but we've reached the core of the storm.", + cost: { + science: 250000, + sharkonium: 40000, + turtle: 10000, }, required: { - upgrades: [], + upgrades: ["steepedSharonium"], }, }, + + sharkoniumHarnesses: { + name: "Sharkonium Harnesses", + desc: "Now that we can make gear to resist the fadding, could we use said gear to help the fadded sealife?", + researchedMessage: + "We've... somewhat succeeded? Whatever we've pulled out of the fadding isn't a singular person anymore. They're afraid. I'm afraid too.", + effectDesc: + "We can bring the fadded creatures back to reality, but...", + cost: { + science: 100000, + sharkonium: 25000, + wisp: 20, + }, + required: { + upgrades: ["chaosStormGear"], + seen: ["wisp"], + }, + }, + + echoShifting: { + name: "Echo Shifting", + desc: "The echos shift between several different forms, but behave like sharks. Are those other forms just for show?", + researchedMessage: + "So, those who we've 'rescued' have always had the ability to change forms at will. They just acted like sharks since I was a shark. Plus, we hadn't asked.", + effectDesc: + "Our echos can change forms to produce different resources! This is bound to help!", + cost: { + science: 150000, + wisp: 1000, + }, + required: { + seen: ["echo"], + }, + }, + recontainChaos: { name: "Recontain Chaos", desc: "PLACEHOLDER", diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index eb0aa0cf..5366db24 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -364,7 +364,7 @@ SharkGame.WorldTypes = { vagueLongDesc: "Waves of bizzare energy radiate from this world.", longDesc: "The currents make most sealife phase in and out of reality. Plants and shelled creatures appear to be immune to this effect.", missing: ["fish","shark","ray","crab"], - present: ["snail", "turtle", "echo", "wisp"], + present: ["snail", "turtle", "wisp"], tip: "Harnessing the energy plaguing this world could be the key to fixing it. Flexibility is your greatest asset.", }, entry: "You awake in a bizzare place, the last traces of your memories washed away by an oddly familiar force.", diff --git a/js/gateway.js b/js/gateway.js index 4d0a8cfc..7d1ae32f 100644 --- a/js/gateway.js +++ b/js/gateway.js @@ -1215,6 +1215,7 @@ SharkGame.Gateway.PresenceFeelings = { sponge: "porous things?", jellyfish: "squishy things?", coral: "colorful things?", + wisp: "incorporeal things?", dolphin: "annoying scholars?", whale: "wise scholars?", octopus: "logical entities?", @@ -1228,6 +1229,8 @@ SharkGame.Gateway.PresenceFeelings = { algae: "something slimy?", seagrass: "some plants?", billfish: "resolute survivalists?", + snail: "withdrawn dreamers?", + turtle: "detached wanderers?", }; SharkGame.Gateway.Messages = { @@ -1338,6 +1341,13 @@ SharkGame.Gateway.Messages = { "Do you wonder who the squid look up to?", "Do you wonder who built the great machine?", ], + chaotic: [ + "Do you wonder why you remained corporeal?", + "Did you recognise any of the echos many faces?", + "Will you one day surrender to the current, just as the turtles did?", + "The snails always had the potential, they just needed your support.", + "You too, are a creature of potential.", + ], }, loss: [ "No matter. You will succeed in the future, no doubt.", diff --git a/js/tabs/gate.js b/js/tabs/gate.js index a763715a..7a52cafc 100644 --- a/js/tabs/gate.js +++ b/js/tabs/gate.js @@ -15,6 +15,7 @@ SharkGame.Gate = { "arcaneCompass", "apologeticAmnesty", "internalExploration", + "chaosStormGear", ], }, From 9c45a5b23ade21b41fb8a05818b597c0862682ed Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Mon, 26 Jan 2026 14:22:20 -0500 Subject: [PATCH 18/19] Added buttons for toggling echo production. They don't work yet. --- js/data/events.js | 35 ++++++++++++++++++++++++ js/data/homeactions.js | 57 ++++++++++++++++++++++++++++++++++++++++ js/data/homemessages.js | 5 ++++ js/data/resourcetable.js | 10 ++++++- js/data/upgrades.js | 24 +---------------- 5 files changed, 107 insertions(+), 24 deletions(-) diff --git a/js/data/events.js b/js/data/events.js index fee41d63..8f963fa1 100644 --- a/js/data/events.js +++ b/js/data/events.js @@ -293,6 +293,41 @@ SharkGame.Events = { SharkGame.flags.gotFarmsBeforeShrimpThreat = true; } }, + }, + chaoticEchoShiftShark: { + handlingTime: "beforeTick", + priority: 0, + getAction() { + return "remove"; + }, + trigger() { + SharkGame.flags.echoShiftShark = true; + SharkGame.flags.echoShiftRay = false; + SharkGame.flags.echoShiftCrab = false; + }, + }, + chaoticEchoShiftRay: { + handlingTime: "beforeTick", + priority: 0, + getAction() { + return "remove"; + }, + trigger() { + SharkGame.flags.echoShiftShark = false; + SharkGame.flags.echoShiftRay = true; + SharkGame.flags.echoShiftCrab = false; + }, + chaoticEchoShiftCrab: { + handlingTime: "beforeTick", + priority: 0, + getAction() { + return "remove"; + }, + trigger() { + SharkGame.flags.echoShiftShark = false; + SharkGame.flags.echoShiftRay = false; + SharkGame.flags.echoShiftCrab = true; + }, }, revealBuyButtons: { handlingTime: "beforeTick", diff --git a/js/data/homeactions.js b/js/data/homeactions.js index 066d225c..535b1c4b 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4911,6 +4911,8 @@ SharkGame.HomeActions = { prereq: { upgrade: ["sharkoniumHarnesses"], }, outcomes: [ "An echo returns to their senses.", + "Bound an echo.", + "Anchored an echo to reality", "They will need some time to adjust to their new minds.", "A singular multitude.", "A... shark joins you?", @@ -4921,6 +4923,7 @@ SharkGame.HomeActions = { "They do not understand what they are. We don't understand either.", "A turtle recognizes this one, but they're different now.", "Do they want to be bound?", + "They thank you and curse you in the same breath.", ], multiOutcomes: [ "A multitude of multitudes.", @@ -4931,6 +4934,57 @@ SharkGame.HomeActions = { ], helpText: "Build a harness able to somewhat pull faded sealife back to reality.", }, + + echoShiftShark: { + name: "Shift echos into sharks", + effect: { + events: ["chaoticEchoShiftShark"], + }, + cost: {}, + prereq: { + upgrade: ["echoShifting"], + }, + outcomes: ["Echos shifted into sharks."], + helpText: "Switch echo production to that of sharks.", + getSpecialTooltip() { + let text = `CURRENT ECHO FORM: ${SharkGame.flags.echoShiftShark ? "SHARK" : SharkGame.flags.echoShiftRay ? "RAY" : "CRAB"}`; + return sharktext.boldString(text); + }, + }, + + echoShiftRay: { + name: "Shift echos into rays", + effect: { + events: ["chaoticEchoShiftRay"], + }, + cost: {}, + prereq: { + upgrade: ["echoShifting"], + }, + outcomes: ["Echos shifted into rays."], + helpText: "Switch echo production to that of rays.", + getSpecialTooltip() { + let text = `CURRENT ECHO FORM: ${SharkGame.flags.echoShiftShark ? "SHARK" : SharkGame.flags.echoShiftRay ? "RAY" : "CRAB"}`; + return sharktext.boldString(text); + }, + }, + + echoShiftCrab: { + name: "Shift echos into crabs", + effect: { + events: ["chaoticEchoShiftCrab"], + }, + cost: {}, + prereq: { + upgrade: ["echoShifting"], + }, + outcomes: ["Echos shifted into crabs."], + helpText: "Switch echo production to that of crabs.", + getSpecialTooltip() { + let text = `CURRENT ECHO FORM: ${SharkGame.flags.echoShiftShark ? "SHARK" : SharkGame.flags.echoShiftRay ? "RAY" : "CRAB"}`; + return sharktext.boldString(text); + }, + }, }, }; @@ -5044,6 +5098,9 @@ SharkGame.HomeActionCategories = { "toggleAutoSmelt", "smeltPorite", "seagrassToScience", + "echoShiftShark", + "echoShiftRay", + "echoShiftCrab", ], }, diff --git a/js/data/homemessages.js b/js/data/homemessages.js index f83e95da..df4b9f11 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -560,6 +560,11 @@ SharkGame.HomeMessages = { unlock: { upgrade: ["resurfacedHope",] }, message: "The snails remind the turtles of how they once were. They want to believe again, to not mindlessly drift towards oblivion.", }, + { + name: "chaotic-echo", + unlock: { totalResource: { echo: 1 } }, + message: "The echos stare at you with many, everchanging faces. The turtles don't see this as the solution they've been looking for.", + }, ], /* { diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index de3e57d8..66949add 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1347,7 +1347,10 @@ SharkGame.ResourceTable = { desc: "Many, yet one.", value: 5000, income: { - wisp: 1, + wisp: 1, + sand: 1, + crystal: 0, + coral: 0, }, }, @@ -1506,6 +1509,11 @@ SharkGame.ResourceIncomeAffectorsOriginal = { multiply: { algae: 0.02, }, + }, + turtleLocator: { + multiply: { + snail: 0.01, + }, }, /* shoveler: { multiply: { diff --git a/js/data/upgrades.js b/js/data/upgrades.js index 130827c5..1eb10135 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -4542,7 +4542,6 @@ SharkGame.Upgrades = { seen: ["clam"], }, }, - snailAquatences: { name: "Snail Aquatences", desc: "Our first meeting with the snails was a bit awkward… maybe we should try to reconcile?", @@ -4561,7 +4560,6 @@ SharkGame.Upgrades = { }, }, }, - kelpCuriosity: { name: "Kelp Curiosity", desc: "We’ve noticed that some snails stare at the green stuff on the floor in fascination. We should support our new friends' interests.", @@ -4598,7 +4596,6 @@ SharkGame.Upgrades = { }, }, }, - currentContact: { name: "Current Contact", desc: "Our botanists insist that there are other physical creatures besides us. Apparently they live high above the seabed.", @@ -4612,7 +4609,6 @@ SharkGame.Upgrades = { seen: ["kelp"], }, }, - seabedGeology: { name: "Seabed Geology", desc: "Some snails stand in awe as the turtles kick up things from the seabed. Maybe we could encourage those snails like we did with the botanists?", @@ -4631,7 +4627,6 @@ SharkGame.Upgrades = { }, }, }, - thermalVents: { name: "Thermal Vents", desc: "Our geologists are excited about an area where the rocks are hotter. They want supplies to go out and investigate.", @@ -4650,7 +4645,6 @@ SharkGame.Upgrades = { }, }, }, - pearlConversion: { name: "Pearl Conversion", desc: "We somtimes find these shiny things inside of clams. The lobsters say they can use them?", @@ -4667,7 +4661,6 @@ SharkGame.Upgrades = { upgrades: ["thermalVents"], }, }, - crystalContainer: { name: "Crystal Containers", desc: "Make weird bottle things from the crystals we have. Maybe useful??", @@ -4686,7 +4679,6 @@ SharkGame.Upgrades = { seen: ["crystal"], }, }, - underwaterChemistry: { name: "Underwater Chemistry", desc: "With the weird bottles, we can now put things and other things into them and see what happens.", @@ -4705,7 +4697,6 @@ SharkGame.Upgrades = { }, }, }, - transmutation: { name: "Transmutation", desc: "By heating things up and doing science things to them, maybe new things can be made!", @@ -4720,7 +4711,6 @@ SharkGame.Upgrades = { 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!", @@ -4734,7 +4724,6 @@ SharkGame.Upgrades = { upgrades: ["transmutation"], }, }, - agriculture: { effect: { incomeMultiplier: { @@ -4742,7 +4731,6 @@ SharkGame.Upgrades = { }, }, }, - sunObservation: { name: "Sun Observation", desc: "Our turtles periodiclly disappear near the surface of the water. Why? Is it due to that weird glare?", @@ -4761,7 +4749,6 @@ SharkGame.Upgrades = { }, }, }, - biology: { name: "Biology", desc: "What are we? What makes us different from the snails and turtles?", @@ -4781,7 +4768,6 @@ SharkGame.Upgrades = { }, }, }, - snailBiology: { name: "Snail Biology", desc: "Our snail studying snails want to learn even more about snails. Might as well help them.", @@ -4804,7 +4790,6 @@ SharkGame.Upgrades = { }, }, }, - turtleBiology: { name: "Turtle Biology", desc: "Where do turtles come from anyways? It seems as if they just appear out of thin air!", @@ -4823,7 +4808,6 @@ SharkGame.Upgrades = { }, }, }, - hyperfixationCommunication: { name: "Hyperfixation Communication", desc: "The snails and turtles don't know eachother too well. We should introduce them.", @@ -4837,7 +4821,6 @@ SharkGame.Upgrades = { upgrades: ["sunObservation"], }, }, - turtleHistory: { name: "Turtle History", desc: "So... the turtles have really long lives, have they really just been drifting around all this time?", @@ -4851,7 +4834,6 @@ SharkGame.Upgrades = { upgrades: ["sunObservation"], }, }, - unitedDetermination: { name: "United Determination", desc: "Learning about the turtle’s history seems to have ignited something within the snails.", @@ -4872,7 +4854,6 @@ SharkGame.Upgrades = { }, }, }, - exploration: { name: "Exploration", desc: "Carry the snails beyond the home seas to see what can be found!", @@ -4989,7 +4970,6 @@ SharkGame.Upgrades = { upgrades: ["steepedSharonium", "resurfacedHope"], }, }, - chaosStormGear: { name: "Chaos Storm Gear", desc: "With our new material, our turtles believe they could develop gear to reach the center of the chaos energy storm, but it will take a lot of sacrifice.", @@ -5006,7 +4986,6 @@ SharkGame.Upgrades = { upgrades: ["steepedSharonium"], }, }, - sharkoniumHarnesses: { name: "Sharkonium Harnesses", desc: "Now that we can make gear to resist the fadding, could we use said gear to help the fadded sealife?", @@ -5023,8 +5002,8 @@ SharkGame.Upgrades = { upgrades: ["chaosStormGear"], seen: ["wisp"], }, + events: ["chaoticEchoShiftShark"], }, - echoShifting: { name: "Echo Shifting", desc: "The echos shift between several different forms, but behave like sharks. Are those other forms just for show?", @@ -5040,7 +5019,6 @@ SharkGame.Upgrades = { seen: ["echo"], }, }, - recontainChaos: { name: "Recontain Chaos", desc: "PLACEHOLDER", From 7f2fc2dca50a9faea89e96ae64c503b896d58eec Mon Sep 17 00:00:00 2001 From: Kate Brownbill Date: Wed, 28 Jan 2026 14:02:34 -0500 Subject: [PATCH 19/19] Shift Echo toggles now change Echo production. --- js/data/events.js | 50 ++++++++++++++++++++++++++++++++++++++++ js/data/resourcetable.js | 9 ++------ js/data/worldtypes.js | 1 + 3 files changed, 53 insertions(+), 7 deletions(-) diff --git a/js/data/events.js b/js/data/events.js index 8f963fa1..009ab724 100644 --- a/js/data/events.js +++ b/js/data/events.js @@ -301,9 +301,25 @@ SharkGame.Events = { return "remove"; }, trigger() { + const crystal = res.getResource("crystal"); + const wisp = res.getResource("wisp"); + const coral = res.getResource("coral"); + const sand = res.getResource("sand"); + + const echo = SharkGame.ResourceMap.get("echo"); + SharkGame.flags.echoShiftShark = true; SharkGame.flags.echoShiftRay = false; SharkGame.flags.echoShiftCrab = false; + + echo.baseIncome = { wisp: 10, sand: 0, crystal: 0, coral: 0 }; + + res.reapplyModifiers("echo", "wisp"); + res.reapplyModifiers("echo", "sand"); + res.reapplyModifiers("echo", "crystal"); + res.reapplyModifiers("echo", "coral"); + + return true; }, }, chaoticEchoShiftRay: { @@ -313,9 +329,26 @@ SharkGame.Events = { return "remove"; }, trigger() { + const crystal = res.getResource("crystal"); + const wisp = res.getResource("wisp"); + const coral = res.getResource("coral"); + const sand = res.getResource("sand"); + + const echo = SharkGame.ResourceMap.get("echo"); + SharkGame.flags.echoShiftShark = false; SharkGame.flags.echoShiftRay = true; SharkGame.flags.echoShiftCrab = false; + + echo.baseIncome = { wisp: 2, sand: 10, crystal: 0, coral: 0 }; + + res.reapplyModifiers("echo", "wisp"); + res.reapplyModifiers("echo", "sand"); + res.reapplyModifiers("echo", "crystal"); + res.reapplyModifiers("echo", "coral"); + + return true; + }, }, chaoticEchoShiftCrab: { handlingTime: "beforeTick", @@ -324,9 +357,26 @@ SharkGame.Events = { return "remove"; }, trigger() { + const crystal = res.getResource("crystal"); + const wisp = res.getResource("wisp"); + const coral = res.getResource("coral"); + const sand = res.getResource("sand"); + + const echo = SharkGame.ResourceMap.get("echo"); + + SharkGame.flags.echoShiftShark = false; SharkGame.flags.echoShiftRay = false; SharkGame.flags.echoShiftCrab = true; + + echo.baseIncome = { wisp: 0, sand: 0, crystal: 2, coral: 1 }; + + res.reapplyModifiers("echo", "wisp"); + res.reapplyModifiers("echo", "sand"); + res.reapplyModifiers("echo", "crystal"); + res.reapplyModifiers("echo", "coral"); + + return true; }, }, revealBuyButtons: { diff --git a/js/data/resourcetable.js b/js/data/resourcetable.js index 66949add..3bfec7bf 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1347,8 +1347,8 @@ SharkGame.ResourceTable = { desc: "Many, yet one.", value: 5000, income: { - wisp: 1, - sand: 1, + wisp: 0, + sand: 0, crystal: 0, coral: 0, }, @@ -1509,11 +1509,6 @@ SharkGame.ResourceIncomeAffectorsOriginal = { multiply: { algae: 0.02, }, - }, - turtleLocator: { - multiply: { - snail: 0.01, - }, }, /* shoveler: { multiply: { diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 5366db24..29f9377d 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -376,6 +376,7 @@ SharkGame.WorldTypes = { "turtles", "clam", "kelp", + "coral", "sharkmachines", "essence", "echoBeacon",