Updated pages and stuff to be accurate. Also made magic trowel havest

all of a plant you harvest with it.
This commit is contained in:
sarah committed 2026-09-07 14:34:50 +02:00
1 parent 38146ff1db
commit d6fa5572ed
4 files changed
+304 -17

No files matched your search

+85 -13
View File
@@ -19,8 +19,9 @@ $PageSection = "Guide";
<p> <p>
A quick guide to growing plants, earning Dew, A quick guide to growing plants, earning Dew,
and discovering mutations. You do not need to discovering mutations, and using the Garden's
know everything here before you start playing. tools and upgrades. You do not need to know
everything here before you start playing.
(But it's useful to do..) (But it's useful to do..)
</p> </p>
@@ -53,9 +54,9 @@ $PageSection = "Guide";
<p> <p>
In the <a href="/Pages/Garden.html">Garden</a>, In the <a href="/Pages/Garden.html">Garden</a>,
select a seed and then choose an empty plot. select a seed and then choose an empty plot with
Plants continue growing with real time, even while the Trowel. Plants continue growing with real time,
you are away from the page. even while you are away from the page.
</p> </p>
<p> <p>
@@ -82,7 +83,9 @@ $PageSection = "Guide";
More valuable seeds usually give more Dew. More valuable seeds usually give more Dew.
The Shop shows the current seed cost, The Shop shows the current seed cost,
harvest reward, growth time, and how many seeds you harvest reward, growth time, and how many seeds you
already own. So you can be smart in your plant investments! already own. The Garden can also quick-buy the selected
seed without making you leave the page. So you can be
smart in your plant investments!
</p> </p>
</section> </section>
@@ -102,7 +105,9 @@ $PageSection = "Guide";
Mutation-derived seed prices are based on their Mutation-derived seed prices are based on their
recipes, so discovering and performing mutations is recipes, so discovering and performing mutations is
often a useful alternative to simply buying the often a useful alternative to simply buying the
resulting seed. resulting seed. The Shop also contains tools, Garden
expansions, additional Gardens, and optional information
upgrades.
</p> </p>
</section> </section>
@@ -186,6 +191,9 @@ $PageSection = "Guide";
additional seeds in the Shop, so you can skip additional seeds in the Shop, so you can skip
creating them through mutations. Though it always creating them through mutations. Though it always
costs more to buy the seeds than create them by mutation.. costs more to buy the seeds than create them by mutation..
Your discoveries are also recorded in the
<a href="/Pages/Plants.html">Plant encyclopedia</a> and
<a href="/Pages/Mutations.html">Mutation encyclopedia</a>.
</p> </p>
<p> <p>
@@ -212,7 +220,8 @@ $PageSection = "Guide";
The <strong>Magic trowel</strong> fills as many empty The <strong>Magic trowel</strong> fills as many empty
plots as it can with the selected seed. If you have plots as it can with the selected seed. If you have
fewer seeds than empty plots, it simply plants every fewer seeds than empty plots, it simply plants every
seed you have. seed you have. Use it on a mature plant to harvest every
mature plant of that same type in the active Garden.
</p> </p>
<p> <p>
@@ -243,6 +252,49 @@ $PageSection = "Guide";
</p> </p>
</section> </section>
<section
id="Gardens"
class="GuideSection"
>
<h2>Gardens and rotation</h2>
<p>
You can buy additional Gardens from the Shop. Each Garden
has its own name, plots, mutation cooldowns, and expansion
size. Use the arrows beside the Garden name to switch
between the Gardens you own.
</p>
<p>
The Plot rotation upgrade adds a direction to planted
plots. Rotation matters for directional mutations and
functional plants, and plants with directional sprites
can visually face their saved direction.
</p>
</section>
<section
id="FunctionalPlants"
class="GuideSection"
>
<h2>Functional plants</h2>
<p>
Some mutation-created plants do more than grow and harvest.
Once mature, functional plants can affect nearby plots or
the wider Garden by harvesting, planting, duplicating,
advancing growth, changing mutation behaviour, or modifying
harvest rewards. Their exact behaviour depends on the plant.
</p>
<p>
Directional functional plants use their plot rotation to
decide where effects such as <strong>Front</strong> and
<strong>Behind</strong> point. Other effects can target
cardinal neighbours, adjacent plots, or the whole Garden.
</p>
</section>
<section <section
id="Account" id="Account"
class="GuideSection" class="GuideSection"
@@ -251,11 +303,11 @@ $PageSection = "Guide";
<p> <p>
Your <a href="/Pages/Profile.html">Profile</a> Your <a href="/Pages/Profile.html">Profile</a>
contains your username, colour, statistics, and contains your username, colour, Garden display settings,
Account Key. Garden saves can sync through the API, statistics, and Account Key. Garden saves can sync through
while the Account Key lets you use the same Garden the API, while the Account Key lets you use the same Garden
in another browser or on another device. in another browser or on another device. It's basically
It's basically just like logging into an account. just like logging into an account.
</p> </p>
<p> <p>
@@ -297,6 +349,26 @@ $PageSection = "Guide";
browser storage and cannot be cleared remotely. browser storage and cannot be cleared remotely.
</p> </p>
</section> </section>
<section
id="Contact"
class="GuideSection"
>
<h2>Contact</h2>
<p>
For general Garden questions or anything that does not fit
elsewhere, email
<a href="mailto:[email protected]">[email protected]</a>.
</p>
<p>
Found a bug? Send it to
<a href="mailto:[email protected]">[email protected]</a>.
Ideas and suggestions can go to
<a href="mailto:[email protected]">[email protected]</a>.
</p>
</section>
</main> </main>
<script src="/Scripts/Garden/PlantImages.js"></script> <script src="/Scripts/Garden/PlantImages.js"></script>
+34 -4
View File
@@ -17,9 +17,9 @@ $PageTitle = "Profile";
<h1>Profile</h1> <h1>Profile</h1>
<p> <p>
Manage your Garden profile, view your Manage your Garden profile and display settings,
statistics, and move your account between view your statistics, move your account between
devices. devices, and find the Garden contact addresses.
</p> </p>
@@ -292,7 +292,17 @@ $PageTitle = "Profile";
<div class="ProfileStatistic"> <div class="ProfileStatistic">
<span class="ProfileStatisticName"> <span class="ProfileStatisticName">
Garden size Gardens owned
</span>
<strong id="ProfileGardensOwned">
...
</strong>
</div>
<div class="ProfileStatistic">
<span class="ProfileStatisticName">
Active Garden size
</span> </span>
<strong id="ProfileGardenSize"> <strong id="ProfileGardenSize">
@@ -303,6 +313,26 @@ $PageTitle = "Profile";
</section> </section>
<section
id="Contact"
class="Panel ProfileSection"
>
<h2 class="PanelHeader PanelHeaderInset">Contact</h2>
<p>
For general Garden questions, email
<a href="mailto:[email protected]">[email protected]</a>.
</p>
<p>
Bug reports can be sent to
<a href="mailto:[email protected]">[email protected]</a>,
while ideas and suggestions can be sent to
<a href="mailto:[email protected]">[email protected]</a>.
</p>
</section>
<section <section
id="Account" id="Account"
class="Panel ProfileSection" class="Panel ProfileSection"
+171
View File
@@ -1826,6 +1826,46 @@ function CreatePlotElement(
} }
if (
SelectedGardenTool ===
"MagicTrowel"
) {
if (Progress < 1) {
MainButton.title =
Plant.Name +
" - " +
Math.floor(
Progress * 100
) +
"% grown";
MainButton.disabled = true;
return Tile;
}
Tile.classList.add(
"GardenPlotMature",
"GardenPlotMagicPlant"
);
MainButton.title =
"Harvest all mature " +
Plant.Name +
" plants in this Garden";
MainButton.addEventListener(
"click",
() => {
HarvestManyPlants(
Plot.Plant
);
}
);
return Tile;
}
if ( if (
SelectedGardenTool !== SelectedGardenTool !==
"Trowel" "Trowel"
@@ -2364,6 +2404,137 @@ async function PlantManySeeds() {
} }
async function HarvestManyPlants(
PlantKey
) {
const ActionTime = Date.now();
AdvanceGameSimulation(
GameSave,
ActionTime
);
const Plant =
Plants[PlantKey];
if (Plant === undefined) {
return;
}
const MatchingPlotIndexes = [];
GameSave.Garden.Plots.forEach(
(Plot, PlotIndex) => {
if (
Plot !== null &&
Plot.Plant === PlantKey &&
IsPlantMature(
Plot,
Plant
)
) {
MatchingPlotIndexes.push(
PlotIndex
);
}
}
);
if (MatchingPlotIndexes.length === 0) {
SetGardenMessage(
"There aren't any mature " +
Plant.Name +
" plants to harvest."
);
RenderGame();
return;
}
let HarvestedCount = 0;
let RewardAmount = 0;
let DisabledCount = 0;
let RewardUnavailableCount = 0;
for (
const PlotIndex
of MatchingPlotIndexes
) {
const HarvestResult =
HarvestGardenPlot(
GameSave,
GameSave.ActiveGardenIndex,
PlotIndex,
ActionTime
);
if (!HarvestResult.Harvested) {
if (HarvestResult.Disabled) {
DisabledCount++;
} else if (
HarvestResult.RewardUnavailable
) {
RewardUnavailableCount++;
}
continue;
}
HarvestedCount++;
RewardAmount +=
HarvestResult.RewardAmount;
}
if (HarvestedCount <= 0) {
if (DisabledCount > 0) {
SetGardenMessage(
Plant.Name +
" can't be harvested right now."
);
} else if (
RewardUnavailableCount > 0
) {
SetGardenMessage(
"Couldn't calculate the harvest reward for " +
Plant.Name +
"."
);
}
RenderGame();
return;
}
SetGardenMessage(
"Magic trowel harvested " +
HarvestedCount.toLocaleString() +
" " +
Plant.Name +
(HarvestedCount === 1
? " plant"
: " plants") +
" for " +
RewardAmount.toLocaleString() +
" Dew."
);
CheckGardenMutations(
GameSave,
ActionTime
);
RenderGame();
await SaveGame(
GameSave
);
}
async function HarvestPlant( async function HarvestPlant(
PlotIndex PlotIndex
) { ) {
+14
View File
@@ -796,6 +796,12 @@ function RenderProfileStatistics() {
?.length ?? ?.length ??
0; 0;
const GardensOwned =
ProfileSave
?.Gardens
?.length ??
1;
const GardenWidth = const GardenWidth =
ProfileSave ProfileSave
?.Garden ?.Garden
@@ -837,6 +843,13 @@ function RenderProfileStatistics() {
) )
); );
SetProfileStatistic(
"ProfileGardensOwned",
FormatProfileNumber(
GardensOwned
)
);
SetProfileStatistic( SetProfileStatistic(
"ProfileGardenSize", "ProfileGardenSize",
GardenWidth + GardenWidth +
@@ -852,6 +865,7 @@ function RenderProfileStatisticsError() {
"ProfileLifetimeDew", "ProfileLifetimeDew",
"ProfilePlantsDiscovered", "ProfilePlantsDiscovered",
"ProfileMutationsDiscovered", "ProfileMutationsDiscovered",
"ProfileGardensOwned",
"ProfileGardenSize" "ProfileGardenSize"
]; ];