diff --git a/js/data/events.js b/js/data/events.js index fee41d63..009ab724 100644 --- a/js/data/events.js +++ b/js/data/events.js @@ -293,6 +293,91 @@ SharkGame.Events = { SharkGame.flags.gotFarmsBeforeShrimpThreat = true; } }, + }, + chaoticEchoShiftShark: { + handlingTime: "beforeTick", + priority: 0, + getAction() { + 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: { + handlingTime: "beforeTick", + priority: 0, + getAction() { + 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", + priority: 0, + getAction() { + 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: { handlingTime: "beforeTick", diff --git a/js/data/homeactions.js b/js/data/homeactions.js index add3fcd7..535b1c4b 100644 --- a/js/data/homeactions.js +++ b/js/data/homeactions.js @@ -4589,6 +4589,403 @@ SharkGame.HomeActions = { }, }, }, + chaotic: { + fakeCatchFish: { + name: "Catch fish", + effect: { + resource: { + get fakeFish(){ + return 1; + }, + }, + }, + removedBy: { + otherActions: ["getClam"], + }, + 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.", + }, + 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.", + }, + + pearlConversion: { cost: [ { resource: "clam", costFunction: "constant", priceIncrease: 5 }, ], }, + + catchWisp: { + name: "Catch wisp", + effect: { + resource: { + get wisp() { + return SharkGame.Aspects.apotheosis.level > 0 ? SharkGame.Aspects.apotheosis.level * 4 : 1; + }, + }, + }, + cost: {}, + prereq: { + upgrade: ["sharkoniumBiteGear"] + }, + 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.", + }, + 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: 60 }, + ], + max: "turtleLocator", + prereq: { upgrade: ["turtleBiology"], }, + outcomes: [ + "Placeholder.", + ], + multiOutcomes: [ + "Placeholders.", + ], + helpText: "Convince a turtle to care about their children.", + }, + getturtleTransporter: { + name: "Organize turtle transporter", + effect: { + resource: { + turtleTransporter: 1, + }, + }, + cost: [ + { resource: "turtle", costFunction: "constant", priceIncrease: 1 }, + { resource: "kelp", costFunction: "linear", priceIncrease: 500 }, + { resource: "crystal", costFunction: "linear", priceIncrease: 25 }, + ], + max: "turtleTransporter", + prereq: { upgrade: ["hyperfixationCommunication"], }, + outcomes: [ + "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: [ + "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: "Get a turtle ready to help transport snails around.", + }, + 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: {}, + + 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.", + "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?", + "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?", + "They thank you and curse you in the same breath.", + ], + 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.", + }, + + 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); + }, + }, + }, }; SharkGame.HomeActionCategories = { @@ -4600,7 +4997,7 @@ SharkGame.HomeActionCategories = { basic: { name: "Basic", - actions: ["catchFish", "debugbutton", "prySponge", "prySponge2", "getClam", "getJellyfish"], + actions: ["catchFish", "debugbutton", "prySponge", "prySponge2", "getClam", "getJellyfish", "fakeCatchFish", "catchWisp"], }, frenzy: { @@ -4619,6 +5016,9 @@ SharkGame.HomeActionCategories = { "getSquid", "getUrchin", "getBillfish", + "getSnail", + "getTurtle", + "getEcho", ], }, @@ -4653,6 +5053,10 @@ SharkGame.HomeActionCategories = { "getBillfishExplorer", "getBillfishMechanic", "getStormgoer", + "getSnailBotanist", + "getSnailGeologist", + "getSnailMalacologist", + "getturtleTransporter", ], }, @@ -4670,6 +5074,7 @@ SharkGame.HomeActionCategories = { "getCollective", "getSpawner", "getBillfishPair", + "getTurtleLocator", ], }, @@ -4693,6 +5098,9 @@ SharkGame.HomeActionCategories = { "toggleAutoSmelt", "smeltPorite", "seagrassToScience", + "echoShiftShark", + "echoShiftRay", + "echoShiftCrab", ], }, diff --git a/js/data/homemessages.js b/js/data/homemessages.js index e3f57386..df4b9f11 100644 --- a/js/data/homemessages.js +++ b/js/data/homemessages.js @@ -515,6 +515,57 @@ 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.", + }, + { + 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.", + }, + { + name: "chaotic-turtlehelpless", + unlock: { upgrade: ["hyperfixationCommunication",] }, + 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.", + }, + { + 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.", + }, + ], /* { message: 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 0206ae7d..3bfec7bf 100644 --- a/js/data/resourcetable.js +++ b/js/data/resourcetable.js @@ -1242,6 +1242,150 @@ SharkGame.ResourceTable = { }, value: 180000, // 250 sharkonium, 250 gravel (18000) }, */ + + // chaotic + + fakeFish: { + name: "fish", + singleName: "fish", + desc: "The hunted.", + color: "#E3D85B", + value: 2, + }, + + snail: { + name: "sea snails", + singleName: "sea snail", + color: "#F6E7A7", + desc: "Shy, yet full of potential.", + income: { + clam: 1, + }, + jobs: [ + "snailBotanist", + "snailGeologist", + "snailMalacologist", + ], + 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.02, + 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.02, + 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.02, + }, + value: 5000, + }, + + turtle: { + name: "turtles", + singleName: "turtle", + color: "#6CB46E", // change when art's done + desc: "Travelers along the flow.", + income: { + kelp: 1, + sand: 1, + }, + jobs: [ + ], + value: 4000, + }, + + turtleLocator: { + name: "turtle locators", + singleName: "turtle locator", + color: "#82DB48", // change when art's done + desc: "Taking responsibility.", + income: { + turtle: 0.04, + }, + value: 8000, + }, + + turtleTransporter: { + name: "turtle transporters", + singleName: "turtle transporter", + color: "#73BA9D", // change when art's done + desc: "Taking a cursory interest in the seafloor.", + multiply: { + snail: 0.01, + }, + value: 6000, + }, + + echo: { // changes production from toggles + name: "echos", + singleName: "echo", + color: "#9CC6A5", // change when art's done + desc: "Many, yet one.", + value: 5000, + income: { + wisp: 0, + sand: 0, + crystal: 0, + coral: 0, + }, + }, + + 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 using crystals.", + 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 = { @@ -1302,6 +1446,11 @@ SharkGame.GeneratorIncomeAffectorsOriginal = { sandDigger: 0.01, fishMachine: 0.01, }, + }, + turtleTransporter: { + multiply: { + snail: 0.01, + }, }, // cool tooltip test crab /* crab: { @@ -1441,7 +1590,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", @@ -1454,7 +1603,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", @@ -1499,7 +1648,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", "turtleLocator"], }, specialists: { name: "Specialists", @@ -1535,6 +1684,10 @@ SharkGame.ResourceCategories = { "billfishExplorer", "billfishMechanic", "stormgoer", + "snailBotanist", + "snailGeologist", + "snailMalacologist", + "turtleTransporter", // "prospector", // "shoveler", // "miller", @@ -1567,6 +1720,8 @@ SharkGame.ResourceCategories = { "clamScavenger", "seabedStripper", "calciniumConverter", + "echoBeacon", + "wispCumulator", // "coalescer", // "crusher", // "pulverizer", @@ -1669,6 +1824,12 @@ SharkGame.InternalCategories = { kelpstuff: { resources: ["kelp", "seaApple"], }, + snails: { + resources: ["snail", "snailBotanist", "snailMalacologist", "snailGeologist"], + }, + turtles: { + resources: ["turtle", "turtleLocator", "turtleTransporter"], + }, 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 826c7463..1eb10135 100644 --- a/js/data/upgrades.js +++ b/js/data/upgrades.js @@ -511,7 +511,7 @@ SharkGame.Upgrades = { crystalContainer: {}, statsDiscovery: { cost: { science: 75 } }, underwaterChemistry: {}, - seabedGeology: {}, + seabedGeology: { effect: { incomeMultiplier: { ray: 2 } } }, thermalVents: { cost: { science: 500, @@ -4527,4 +4527,508 @@ SharkGame.Upgrades = { }, }, }, + 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: "We’ve noticed that some snails stare at the green stuff on the floor in fascination. We should support our new friends' interests.", + researchedMessage: + "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: + "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: 200, + }, + 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: 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.", + cost: { + kelp: 100, + }, + required: { + upgrades: ["kelpCuriosity"], + 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?", + 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"], + }, + effect: { + incomeMultiplier: { + snailGeologist: 2, + }, + }, + }, + pearlConversion: { + name: "Pearl Conversion", + desc: "We somtimes find these shiny things inside of clams. The lobsters say they can use them?", + researchedMessage: + "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: + "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: ["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: 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: { + effect: { + incomeMultiplier: { + snailBotanist: 2, + }, + }, + }, + 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.02, + }, + }, + }, + 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: 5000, + }, + required: { + upgrades: ["biology", "sunObservation"], + }, + effect: { + incomeMultiplier: { + turtle: 2, + }, + }, + }, + hyperfixationCommunication: { + name: "Hyperfixation Communication", + 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, + 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"], + }, + }, + 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: 800000, + }, + required: { + upgrades: ["biology", "turtleHistory"], + }, + effect: { + incomeMultiplier: { + snailBotanist: 2, + snailGeologist: 2, + snailMalacologist: 2, + }, + }, + }, + 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.", + researchedMessage: + "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: + "We’re able to catch the fish floating around! We can’t eat them yet, but it’s a start!", + cost: { + 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: ["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"], + }, + 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?", + 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", + researchedMessage: "PLACEHOLDER", + effectDesc: "PLACEHOLDER", + cost: { + wisp: 8e12, + }, + required: { + }, + }, + }, }; diff --git a/js/data/worldtypes.js b/js/data/worldtypes.js index 1e26e359..29f9377d 100644 --- a/js/data/worldtypes.js +++ b/js/data/worldtypes.js @@ -355,6 +355,43 @@ SharkGame.WorldTypes = { 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","shark","ray","crab"], + 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.", + style: "chaotic", + includedResources: [ + "wisp", + "echo", + "snails", + "turtles", + "clam", + "kelp", + "coral", + "sharkmachines", + "essence", + "echoBeacon", + "wispCumulator", + "basicmaterials", + "fakeFish", + "world", + "aspectAffect", + ], + absentResources: ["fish"], + gateRequirements: { + upgrades: ["recontainChaos"], + }, + par: 50, //Adjust later + }, stone: { name: "Stone", desc: "A world unweathered by ocean currents. It has no natural sand.", diff --git a/js/gateway.js b/js/gateway.js index 090f7c23..7d1ae32f 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: [], @@ -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", ], }, 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 } }; }