diff --git a/README.md b/README.md
index 45bef58a..09a00e36 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,30 @@
# Shark Game
-Shark Game is a web game made entirely in HTML, CSS and JavaScript by Cirrial. It is a game belonging to the "idle" or "incremental" genre. It does not require constant player attention, and can progress while the player does other things before returning to it. This isn't in any way a new or pioneering concept - a lot of people have probably heard of Candy Box or A Dark Room, or the more popular contemporary Cookie Clicker.
+Shark Game is a web game made entirely in HTML, CSS and JavaScript. It is a game belonging to the "incremental" genre, though is not an "idle" game.
-## Development Plan
+It was originally conceived for Seamergency 2014 by Cirrial, who spent a few years working on it before moving on to other projects. In 2020, spencers145 (AKA base4) and Toby222 picked up the project to continue developemnt. spencers145 made a fork, where an older version of the project currently sits. Toby222 forked that to make this repo, which holds the up-to-date game.
-Cirrial originally developed this game for Seamergency 2014, but continued to develop it afterward. It quickly became a niche favorite among idle game enthusiasts. After a string of updates, Cirrial dropped development in mid-2015. The final version is v0.71.
+The hub branch holds the landing page for the game, which disambiguates the available versions of it, both current and historical. The alpha branch is for stable releases, and the dev branch is for development builds.
-While the game is in a more-than-playable state, it remains unfinished. This mod, dubbed New Frontiers, intends to finish what Cirrial started, and then move on to reimagine the game and its world.
+The hub, alpha, and dev branches are deployed at https://shark.tobot.dev, https://alpha.shark.tobot.dev, and https://dev.shark.tobot.dev respectively.
-This repository holds the second step of development, which is to reimagine each of the worlds as unique places with individually significant and different gameplay elements, along with UI improvements and overhauls to major game mechanics.
+## Sprite Packing
-Contributions welcome.
+We use a free sprite packer at https://free-tex-packer.com/app/ for sprites.js, sprites.png, homemessagesprites.png, and homemessagesprites.js.
+
+To generate sprites.js and sprites.png, use the following custom Format:
+```
+SharkGame.Sprites = {
+ {{#rects}}
+ "{{{name}}}": {
+ frame: {
+ x: {{frame.x}},
+ y: {{frame.y}},
+ w: {{frame.w}},
+ h: {{frame.h}}
+ },
+ },
+ {{/rects}}
+}
+```
+To generate homemessagesprites.png and homemessagesprites.js, replace `SharkGame.Sprites` with `SharkGame.HomeMessageSprites` above.
diff --git a/contributors.html b/contributors.html
index a51602cf..c1b0d72e 100644
--- a/contributors.html
+++ b/contributors.html
@@ -100,6 +100,10 @@
SHARK GAME: NEW FRONTIERS
Glowkate |
Art |
+
+ Main Battle Train |
+ Art |
+
UnstoppableGiant |
Playtesting, Art |
diff --git a/img/small/actions/getCrimsonCombine.png b/img/small/actions/getCrimsonCombine.png
new file mode 100644
index 00000000..dd0260f1
Binary files /dev/null and b/img/small/actions/getCrimsonCombine.png differ
diff --git a/img/sprites.png b/img/sprites.png
index 59e10160..072721cb 100644
Binary files a/img/sprites.png and b/img/sprites.png differ
diff --git a/js/data/sprites.js b/js/data/sprites.js
index f3916636..fb3b0a29 100644
--- a/js/data/sprites.js
+++ b/js/data/sprites.js
@@ -247,7 +247,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getCrystalMiner": {
+ "actions/getCrimsonCombine": {
frame: {
x: 100,
y: 350,
@@ -255,7 +255,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getCuriousCrab": {
+ "actions/getCrystalMiner": {
frame: {
x: 150,
y: 350,
@@ -263,7 +263,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getDiver": {
+ "actions/getCuriousCrab": {
frame: {
x: 200,
y: 350,
@@ -271,7 +271,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getDolphin": {
+ "actions/getDiver": {
frame: {
x: 250,
y: 350,
@@ -279,7 +279,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getEel": {
+ "actions/getDolphin": {
frame: {
x: 300,
y: 350,
@@ -287,7 +287,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getEggBrooder": {
+ "actions/getEel": {
frame: {
x: 350,
y: 350,
@@ -295,7 +295,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getExplorer": {
+ "actions/getEggBrooder": {
frame: {
x: 400,
y: 0,
@@ -303,7 +303,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getExtractionTeam": {
+ "actions/getExplorer": {
frame: {
x: 400,
y: 50,
@@ -311,7 +311,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getFarmer": {
+ "actions/getExtractionTeam": {
frame: {
x: 400,
y: 100,
@@ -319,7 +319,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getFishMachine": {
+ "actions/getFarmer": {
frame: {
x: 400,
y: 150,
@@ -327,7 +327,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getHarvester": {
+ "actions/getFishMachine": {
frame: {
x: 400,
y: 200,
@@ -335,7 +335,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getInvestigator": {
+ "actions/getHarvester": {
frame: {
x: 400,
y: 250,
@@ -343,7 +343,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getJellyfish": {
+ "actions/getInvestigator": {
frame: {
x: 400,
y: 300,
@@ -351,7 +351,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getKelpCultivator": {
+ "actions/getJellyfish": {
frame: {
x: 400,
y: 350,
@@ -359,7 +359,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getLaser": {
+ "actions/getKelpCultivator": {
frame: {
x: 0,
y: 400,
@@ -367,7 +367,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getLobster": {
+ "actions/getLaser": {
frame: {
x: 50,
y: 400,
@@ -375,7 +375,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getLobter": {
+ "actions/getLobster": {
frame: {
x: 100,
y: 400,
@@ -383,7 +383,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getMaker": {
+ "actions/getLobter": {
frame: {
x: 150,
y: 400,
@@ -391,7 +391,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getManta": {
+ "actions/getMaker": {
frame: {
x: 200,
y: 400,
@@ -399,7 +399,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getNurse": {
+ "actions/getManta": {
frame: {
x: 250,
y: 400,
@@ -407,7 +407,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getOctopus": {
+ "actions/getNurse": {
frame: {
x: 300,
y: 400,
@@ -415,7 +415,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getPhilosopher": {
+ "actions/getOctopus": {
frame: {
x: 350,
y: 400,
@@ -423,7 +423,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getPit": {
+ "actions/getPhilosopher": {
frame: {
x: 400,
y: 400,
@@ -431,7 +431,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getPlanter": {
+ "actions/getPit": {
frame: {
x: 450,
y: 0,
@@ -439,7 +439,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getQueen": {
+ "actions/getPlanter": {
frame: {
x: 450,
y: 50,
@@ -447,7 +447,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getResearcher": {
+ "actions/getQueen": {
frame: {
x: 450,
y: 100,
@@ -455,7 +455,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getSandDigger": {
+ "actions/getResearcher": {
frame: {
x: 450,
y: 150,
@@ -463,7 +463,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getScavenger": {
+ "actions/getSandDigger": {
frame: {
x: 450,
y: 200,
@@ -471,7 +471,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getScholar": {
+ "actions/getScavenger": {
frame: {
x: 450,
y: 250,
@@ -479,7 +479,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getScientist": {
+ "actions/getScholar": {
frame: {
x: 450,
y: 300,
@@ -487,7 +487,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getSeaApple": {
+ "actions/getScientist": {
frame: {
x: 450,
y: 350,
@@ -495,7 +495,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getShark": {
+ "actions/getSeaApple": {
frame: {
x: 450,
y: 400,
@@ -503,7 +503,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getShoveler": {
+ "actions/getShark": {
frame: {
x: 0,
y: 450,
@@ -511,7 +511,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getShrimp": {
+ "actions/getShoveler": {
frame: {
x: 50,
y: 450,
@@ -519,7 +519,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getSifter": {
+ "actions/getShrimp": {
frame: {
x: 100,
y: 450,
@@ -527,7 +527,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getSkimmer": {
+ "actions/getSifter": {
frame: {
x: 150,
y: 450,
@@ -535,7 +535,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getSpongeFarm": {
+ "actions/getSkimmer": {
frame: {
x: 200,
y: 450,
@@ -543,7 +543,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getSprongeSmelter": {
+ "actions/getSpongeFarm": {
frame: {
x: 250,
y: 450,
@@ -551,7 +551,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getSquid": {
+ "actions/getSprongeSmelter": {
frame: {
x: 300,
y: 450,
@@ -559,7 +559,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getStormgoer": {
+ "actions/getSquid": {
frame: {
x: 350,
y: 450,
@@ -567,7 +567,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getTechnician": {
+ "actions/getStormgoer": {
frame: {
x: 400,
y: 450,
@@ -575,7 +575,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getTirelessCrafter": {
+ "actions/getTechnician": {
frame: {
x: 450,
y: 450,
@@ -583,7 +583,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getTreasurer": {
+ "actions/getTirelessCrafter": {
frame: {
x: 500,
y: 0,
@@ -591,7 +591,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getUrchin": {
+ "actions/getTreasurer": {
frame: {
x: 500,
y: 50,
@@ -599,7 +599,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getWhale": {
+ "actions/getUrchin": {
frame: {
x: 500,
y: 100,
@@ -607,7 +607,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/getWorker": {
+ "actions/getWhale": {
frame: {
x: 500,
y: 150,
@@ -615,7 +615,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/jellyfishToScience": {
+ "actions/getWorker": {
frame: {
x: 500,
y: 200,
@@ -623,7 +623,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/makeSacrifice": {
+ "actions/jellyfishToScience": {
frame: {
x: 500,
y: 250,
@@ -631,7 +631,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/pearlConversion": {
+ "actions/makeSacrifice": {
frame: {
x: 500,
y: 300,
@@ -639,7 +639,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/prySponge": {
+ "actions/pearlConversion": {
frame: {
x: 500,
y: 350,
@@ -647,7 +647,7 @@ SharkGame.Sprites = {
h: 50,
},
},
- "actions/prySponge2": {
+ "actions/prySponge": {
frame: {
x: 500,
y: 400,
@@ -1367,4 +1367,12 @@ SharkGame.Sprites = {
h: 24,
},
},
+ "actions/prySponge2": {
+ frame: {
+ x: 500,
+ y: 400,
+ w: 50,
+ h: 50,
+ },
+ },
};
diff --git a/js/main.js b/js/main.js
index 3bc75394..188fbf62 100644
--- a/js/main.js
+++ b/js/main.js
@@ -101,7 +101,7 @@ $.extend(SharkGame, {
],
GAME_NAME: null,
ACTUAL_GAME_NAME: "Shark Game",
- VERSION: "20240909a",
+ VERSION: "20241106a",
ORIGINAL_VERSION: 0.71,
VERSION_NAME: "The Tempetuous Update",
EPSILON: 1e-6, // floating point comparison is a joy
@@ -904,6 +904,9 @@ SharkGame.Button = {
};
SharkGame.Changelog = {
+ "New Frontiers patch 20241106a": [
+ "Added a new sprite courtesy of Main Battle Train.",
+ ],
"New Frontiers patch 20240909a": [
"Added another one new sprite courtesy of Glowkate!",
"Added a heap of new fun facts.",