PvZ2Info

Information about the Plants vs Zombies 2 game

I do not use Discord myself but I know that there are several Discord channels for discussing the game.

If you are a Discord user, be advised that there is a Discord worm spreading and phishing for access to your Discord account. It sends messages pretending to be about a “game development”. The messages come from already compromised accounts – which could be your friends.

If you fall for the scam, your Discord account is gone forever and is not recoverable. stay safe out there.

Here is a Twitter thread warning about the worm.

I have posted this information on Reddit in the past but decided to have it on my blog too, for completeness, so here it is again.

The Bug

If you are playing the game on two or more devices, linked via an e-mail address submitted to PopCap's servers, you are very likely experiencing this annoyance – you start playing Penny's Pursuit on one device, then play on another, and suddenly all the levels are marked as already completed on all difficulties, despite that you haven't played them yet, making you miss the first-clear rewards.

PopCap are well aware of this problem – in fact, have been aware of it for more than a year – but have yet to do anything to solve it. I think that the problem is in the code that runs on their servers, although probably a solution would require modifying the client (i.e., the game), too.

Notes

  1. The bug happens when you play the game on two (or more) devices that are linked via an e-mail address submitted to PopCap's servers. If you're playing the game only on a single device, you will not encounter this bug and can safely disregard this post.

  2. My solution applies only before you have started playing the new Penny's Pursuit event and when the bug hasn't happened yet. If it has already happened, there is nothing you can do except wait for the next event and use my solution then.

  3. The solution below is for 2 devices but it can easily be generalized for N linked devices.

The Solution

  1. Make sure the game isn't running on any of your devices. Force-close it, if necessary.

  2. Wait for the new Penny's Pursuit level to start. Do not open the game before this happens. (These events start at a fixed astronomical time, so all you need is a watch – you don't need to run the game and check whether the event has started.)

  3. Start the game on the 1st device.

  4. Start the game on the 2nd device.

  5. Enter Penny's Pursuit on the 1st device. All levels will be uncompleted and the first level will be unlocked. Do not play any levels yet! This is important.

  6. Enter Penny's Pursuit on the 2nd device. All levels will be uncompleted and the first level will be unlocked. Do not play any levels yet!

  7. Exit Penny's Pursuit on the 1st device and force-sync the device (there is a button for this on the dialog that appears when tapping the cloud icon on the profile selection screen).

  8. Exit Penny's Pursuit on the 2nd device and force-sync the device.

  9. Force-sync the 1st device again.

That's it. After doing the above steps all levels are marked as uncompleted and the first level is unlocked. You can now play the game on either device and when the devices sync, your progress will be carried to all the linked devices.

Some of the above steps might be unnecessary; I have included them only as a precaution. Basically, the idea is:

  1. After the event has started, enter Penny's Pursuit on each device before any of the devices has synced.

  2. After you've entered Penny's Pursuit on each device, sync them all.

Note that for all practical purposes, the game “syncs” when you see the profile selection screen, no matter how you got there (force-closed and re-started the game, or switched from the main screen of the game to the profile selection screen).

You will have to repeat this procedure for each new event.

For course, the proper solution is for PopCap to re-design their data synchronization algorithm – but don't hold you breadth hoping for this to happen any time soon.

From June 16 to June 23, the game will feature the Mulch Madness event. The Shop will have a free bundle, containing 10 units of fuel for Penny's Pursuit and 10 seeds for Dark Ages plants. The seeds will be for the following kinds:

Plant Seeds Probability
Fume-shroom 5 20.00 %
Magnet-shroom 5 20.00 %
Puff-shroom 5 20.00 %
Sun Bean 5 20.00 %
Sun-shroom 5 20.00 %

The bundle is a one-time “purchase” per device but I'm not sure if it will be available only once for the whole event or every day of it. Probably the former.

There was a data push today. (Interestingly – not yesterday, on a Thursday, as it normally happens.). It changed only two things:

  1. The power mint cooldowns are no longer halved; they are back to normal, since the Improve-mint event is over. Too bad, I really liked the shorter times. :)

  2. The timeout of ads has been increased from 3 to 5 seconds. Possibly as a mitigation for the reported crashes when watching ads.

A Redditor is wondering why the Shop is offering for purchase seeds for a plant that cannot be leveled up (Thyme Warp).

This is a good one. Gather 'round the fire, kids, and let's delve in.

Originally, the plants Thyme Warp and Gold Leaf were meant to have levels just like the other plants and to be leveled up with seeds. The data about their levels and properties still exists in the game:

Thyme Warp

Level Sun Cost Cooldown (sec) Coins to upgrade Seeds to upgrade
1 75 60 1,000 50
2 75 60 3,000 50
3 75 60 5,000 50
4 75 60 5,000 50
5 75 60 5,000 50
6 75 50 5,000 50
7 75 50 5,000 50
8 50 50 5,000 50
9 50 50 5,000 50
10 50 45

Gold Leaf

Level Sun Cost Cooldown (sec) Coins to upgrade Seeds to upgrade
1 50 30 1,000 10
2 50 30 5,000 75
3 50 30 10,000 200
4 50 30 20,000 400
5 50 30 30,000 750
6 50 25 40,000 1,000
7 50 25 50,000 1,250
8 25 25 60,000 1,500
9 25 25 70,000 2,000
10 25 20

However, it seems that PopCap changed their mind on this subject later and decided not to have these two plants upgradeable. But instead of removing the above data from the game, they chose the lazy way and simply set the max levels of these two plants to 1.

Now, whoever designed the Shop offers (note that these particular offers – seeds for gems and seeds for less than 5,000 coins – appear in the Shop only for players who have not finished all the worlds yet A data push on July 01, 2021, enabled these offers for everyone; I'm not sure if this was intended or just yet another bug) didn't look too close at all this and decided that if a plant has upgrade data, there should be offers of sees to upgrade it.

TL;DR: It's a bug. The Shop contains offers that are of no use to the players (and you shouldn't buy them, or you would be wasting gems or coins). Fortunately, it's a bug that can be fixed with a data push. Somebody please kick PopCap and tell them to remove the following entries from the file market_schedule.rton:

{
    "Comment": "Thyme Warp",
    "Category": "8 Hour Offers",
    "Priority": "",
    "ABTest": "",
    "PromotionGroup": "",
    "AdditionalSegment": "Eighties",
    "SoftCurrency": "",
    "SoftCost": -1,
    "MaxPurchase": -1,
    "SoftCostPerPurchase": -1,
    "Visuals": null,
    "Sku": [
        "com.popcap.pvz2.das.seeds.thymewarp.5.3g",
        "com.popcap.pvz2.android.das.seeds.thymewarp.5.3g"
    ]
},
{
    "Comment": "Thyme Warp",
    "Category": "8 Hour Offers",
    "Priority": "",
    "ABTest": "",
    "PromotionGroup": "",
    "AdditionalSegment": "Eighties",
    "SoftCurrency": "",
    "SoftCost": -1,
    "MaxPurchase": -1,
    "SoftCostPerPurchase": -1,
    "Visuals": null,
    "Sku": [
        "com.popcap.pvz2.das.seeds.thymewarp.10.10g",
        "com.popcap.pvz2.android.das.seeds.thymewarp.10.10g"
    ]
},
{
    "Comment": "Thyme Warp",
    "Category": "8 Hour Offers",
    "Priority": "",
    "ABTest": "",
    "PromotionGroup": "",
    "AdditionalSegment": "Eighties",
    "SoftCurrency": "",
    "SoftCost": -1,
    "MaxPurchase": -1,
    "SoftCostPerPurchase": -1,
    "Visuals": null,
    "Sku": [
        "com.popcap.pvz2.das.seeds.thymewarp.5.c1k",
        "com.popcap.pvz2.android.das.seeds.thymewarp.5.c1k"
    ]
},
{
    "Comment": "Thyme Warp",
    "Category": "8 Hour Offers",
    "Priority": "",
    "ABTest": "",
    "PromotionGroup": "",
    "AdditionalSegment": "Eighties",
    "SoftCurrency": "",
    "SoftCost": -1,
    "MaxPurchase": -1,
    "SoftCostPerPurchase": -1,
    "Visuals": null,
    "Sku": [
        "com.popcap.pvz2.das.seeds.thymewarp.20.c5k",
        "com.popcap.pvz2.android.das.seeds.thymewarp.20.c5k"
    ]
},
{
    "Comment": "Gold Leaf",
    "Category": "8 Hour Offers",
    "Priority": "",
    "ABTest": "",
    "PromotionGroup": "",
    "AdditionalSegment": "LostCity",
    "SoftCurrency": "",
    "SoftCost": -1,
    "MaxPurchase": -1,
    "SoftCostPerPurchase": -1,
    "Visuals": null,
    "Sku": [
        "com.popcap.pvz2.das.seeds.goldleaf.5.3g",
        "com.popcap.pvz2.android.das.seeds.goldleaf.5.3g"
    ]
},
{
    "Comment": "Gold Leaf",
    "Category": "8 Hour Offers",
    "Priority": "",
    "ABTest": "",
    "PromotionGroup": "",
    "AdditionalSegment": "LostCity",
    "SoftCurrency": "",
    "SoftCost": -1,
    "MaxPurchase": -1,
    "SoftCostPerPurchase": -1,
    "Visuals": null,
    "Sku": [
        "com.popcap.pvz2.das.seeds.goldleaf.10.10g",
        "com.popcap.pvz2.android.das.seeds.goldleaf.10.10g"
    ]
},
{
    "Comment": "Gold Leaf",
    "Category": "8 Hour Offers",
    "Priority": "",
    "ABTest": "",
    "PromotionGroup": "",
    "AdditionalSegment": "LostCity",
    "SoftCurrency": "",
    "SoftCost": -1,
    "MaxPurchase": -1,
    "SoftCostPerPurchase": -1,
    "Visuals": null,
    "Sku": [
        "com.popcap.pvz2.das.seeds.goldleaf.5.c1k",
        "com.popcap.pvz2.android.das.seeds.goldleaf.5.c1k"
    ]
},
{
    "Comment": "Gold Leaf",
    "Category": "8 Hour Offers",
    "Priority": "",
    "ABTest": "",
    "PromotionGroup": "",
    "AdditionalSegment": "LostCity",
    "SoftCurrency": "",
    "SoftCost": -1,
    "MaxPurchase": -1,
    "SoftCostPerPurchase": -1,
    "Visuals": null,
    "Sku": [
        "com.popcap.pvz2.das.seeds.goldleaf.20.c5k",
        "com.popcap.pvz2.android.das.seeds.goldleaf.20.c5k"
    ]
},

And while you're at it, also ask them to add offers for Sunflower and Peashooter, as well as 5,000-coin offers (for those who have finished all the worlds) for Kernel-pult. These are missing for historical reasons that no longer make sense.

Addendum

On July 06 there was a data push, which fixed this issue pretty much the way I suggested above. You won't see these useless offers in the Shop any more.

When playing the game, the killed zombies can drop coins or sprouts. You can plant the sprouts in your Zen Garden and a random plant grows from it in a few hours (the time can be shortened by spending gems). A regular plant grown this way becomes boosted the next time (only) when you use it in the world levels, in Endless, or in Penny's Pursuit (not in the Arena, though). If the plant is Marigold, once it grows up it is converted to 500 coins.

Since 500 coins is a pitiful amount (you can get 500 just by watching a 30-second ad instead of waiting for several hours), many people don't bother farming the Zen Garden for coins and using boosted plants is rarely necessary (with the possible exception of the last level of the Wild West Wipeout quest, where having a boosted Hypno-shroom makes the level almost bearable). So, the sprouts keep accumulating. Personally, mine increase by about 100 per day.

Like all other numbers in the game, the number of sprouts you can have has an upper limit. However, while for things like coins, gems, mints, and gauntlets, the limit is huge (2^31-1, or more than 2 billion), the maximum number of sprouts that you can have is much smaller – only 2^15-1, or 32,767.

Since the limit is relatively low, it is very possible to hit it while playing the game normally – I hit it in about a year. However, there is a bug. Once you hit the limit, the number of sprouts you have doesn't just stop increasing – it resets to 0, so you essentially lose all your sprouts. Oh, well, at least it doesn't go negative.

This is a genuine programming bug (“integer overflow”, as we call this kind of bug in my line of work) that could be fixed with a couple of lines of code – if PopCap could be bothered to do it.

In general, PopCap's programmers clearly have trouble with the concept “increase X until a cap of Y is reached”. Such problems occur in one form or another in various places of the game. PopCap, if you pardon the pun, keeps “popping the cap”.

If you feel like it, bug PopCap to fix this bug. Until they do, be aware that if the number of your sprouts reaches above 32 thousand, you're likely to lose them all very soon, so try to make some use of them.

Starting with version 8.9.1, the game is displaying “tips” on its loading screen. There are 15 different tips. Here are all of them in English:

  • Leave spaces in the back columns for bigger shooters.
  • Plant sun producers early and often.
  • Try for 2 columns of sun producers.
  • Try to save sun for costlier but more powerful plants.
  • Use Plant Food on anything to make room for floating Plant Foods.
  • A plant becomes briefly invulnerable during its Plant Food effect.
  • Don't be afraid to plant on the right half of the lawn.
  • Press the advantage.
  • Try insta-kills like Chili Bean or Chomper against heavily armored zombies.
  • Thrown Imps tend to land in the same spots.
  • Zombies of a world can be defeated by plants of that world.
  • Stop or slow early zombies to give more time to generate sun.
  • Build sun production as fast and early as you can.
  • Replace sun producers with offensive plants later in the level.
  • Back up barrier plants with short-range melee plants behind them.

Before displaying the tip, the game also shows one or more loading messages. Unless your Internet connection is very slow, you are unlikely to have seen them all. Here they are (at least the English version of them):

  • Putting 1s and 0s in order...
  • Waking up plants...
  • Waking up zombies...
  • Adding cuteness...
  • Injecting 150% more ZANG!

For a list of the documented changes, see this post.

As an aside, I welcome that PopCap have listened to my suggestion and have started publishing themselves information about the upcoming Arenas and Penny's Pursuit events. I've always maintained that the payers should receive such information from an official source – the game producer – instead of from a random guy on the Internet like me, who has been reverse-engineering the game.

Unfortunately, the information they provide still leaves something to be desired. Take, for instance, their information about the upcoming Penny's Pursuit events from their post linked above and compare it with my blog post on this subject. Unlike them, I list the duration of each event (so that players don't have to do date arithmetic in their heads), how many seeds for each plant you get in the multi-plant event, and which is the Zomboss you have to fight there. I mean, all this information is already in the game files – it just needs to be extracted from there and presented in human-readable form – something that can be done automatically. But, hey, it's a good start for PopCap. Give them some time and they might improve the information they publish about these events.

Also, I can't help but think of one angry little girl that desperately tried to stop me from publishing such information. She must be really annoyed now that PopCap have listened to me and have started publishing it themselves. :)

Anyway, here we'll concentrate on what PopCap hasn't deemed necessary to tell us about the changes they made in version 8.9.1 of the game. (Version 8.9.2 is not available on Android, only on iOS, so I can't tell how it differs from version 8.9.1.) Some of the changes are immediately obvious to anyone who has opened the updated game. Others – not so much.

Penny's Pursuit Changes

  • Three new short Penny's Pursuit worlds, constructed from previously existing levels:
    • rift_152, rift_032_1, rift_154, rift_099_1, rift_114_1
    • rift_100_1, rift_170, rift_172, rift_096_1, rift_171
    • rift_125_1, rift_168, rift_117_1, rift_120_1, rift_166
  • New Penny's Pursuit levels, to be used in future Penny's Pursuit worlds:
    • RIFT_176
    • RIFT_177
    • RIFT_178
    • RIFT_179
    • RIFT_180
  • About a dozen files are unnecessarily duplicated – e.g., RIFT_032_1 is an exact copy of RIFT_032 – wasting space in the OBB file.
  • Penny's Pursuit level RIFT_166 (a Vasebreaker level) has been modified a bit – some of the zombies of some types have been reduced, of other types – increased, the plants in vases have been increased and now include Ice Bloom too.
  • Penny's Pursuit levels RIFT_027, RIFT_044, RIFT_056 and RIFT_064, which have a condition to poison a given number of zombies, have been modified so that Puffball-inflicted poisoning (which is different from e.g., the Goo Peashooter-inflicted poisoning) works too.
  • A 3rd Jurassic Marsh Penny's Pursuit Zomboss has been added to the existing 2.

Arena Changes

  • Two new Arenas
    • JOUST128
    • JOUST129
  • The order in which some zombies spawn (e.g., Cannons, Superfans, etc.) in the Arena level JOUST122 has been changed.
  • In the Arena level JOUST21 the locked plant (Hot Date) is no longer imitated and more plant food drops from zombies.

World Level Changes

The final levels of the worlds drop a world key for the next world, when beaten:

World Level Drops key for
Ancient Egypt 6 Pirate Seas
Pirate Seas 25 Wild West
Wild West 25 Frostbite Caves
Frostbite Caves 30 Lost City
Lost City 32 Far Future
Far Future 25 Dark Ages
Dark Ages 20 Neon Mixtape Tour
Neon Mixtape Tour 32 Jurassic Marsh
Jurassic Marsh 32 Big Wave Beach
Big Wave Beach 32 Modern Day

In addition, the following levels have changed:

  • Wild West Day 21: the zombie types are changed a bit.
  • Ancient Egypt Day 5: Dialog about unlocking Iceberg Lettuce added.
  • Ancient Egypt Day 7: unlocks the Calendar.
  • Ancient Egypt Day 11: Twin Sunflower and Grave Buster are added to the pre-selected plants.
  • Lost City Day 24: the line of flowers is moved 1 column to the left.
  • Pirate Seas Day 2: unlocks the Calendar.
  • Pirate Seas Day 24: no longer grants the Pirate Stars achievement.
  • Pirate Seas Day 25: grants the Pirate Stars achievement.

User Interface Changes

  • Inferno has a costume (gas mask), currently unobtainable.
  • Boom Balloon Flower has been put in the right place in the Almanac.
  • The profile selection screen gets a new “Plants vs Zombies 2” text.
  • The keychain with world keys no longer drops from Ancient Egypt and in fact no longer exists as a picture. There are separate pictures of keys for each world.
  • The Taco with a waffle in it has been added to the world trophies.
  • A new background has been added to the loading screen. It includes images of plants and zombies opposing each other.
  • A new sprite has been added to the Stallia effects.
  • The Calendar has a Claim button. (As an aside, this is buggy as an anthill. To begin with, there is no point for the button, since you can't close the dialog – the Close button is disabled – in order to claim the reward later. Worse, sometimes the Claim button doesn't appear at all, and since you can't close the Calendar or do anything else, you have to force-close the game. When you do so, the reward is marked as claimed but you don't get it. In addition, an old bug still appears occasionally – the reward sometimes cannot be claimed and the timer just starts counting down again for it. Really, PopCap?!)
  • The Calendar user interface has been changed a bit – e.g., it now contains a timer counting down the time until the next reward becomes available, but there are some other changes as well.
  • Some minor changes to the user interface of the Shop – like the size of some elements has been changed by a few pixels.
  • The world preview now contains information how to unlock that world, if the world hasn't been unlocked yet.
  • During the Improve-mint event (May 24 – Jun 02), the Calendar will have an additional 7-day tab, granting 3 mints per day the first 6 days and 10 mints on the 7th day.
  • The Shop now offers every 8 hours a selection of pinatas containing world-plant seeds. This is available only to profiles that haven't finished all the worlds yet; the others get the old offers for 5,000 coins only. Some world plants are never offered – Sunflower, Wall-nut, Pashooter. The offers are at the following prices:
    • 5 seeds – 3 gems
    • 10 seeds – 10 gems
    • 5 seeds – 1,000 coins
    • 20 seeds – 5,000 coins

On Monday, May 24, there was a data push. One of the things it did was to basically halve the cool-down times of every power mint:

Power Mint Level Old Cool-down (sec) New Cool-down (sec)
1 85 43
2 80 40
3 80 40
4 75 38
5 75 38
6 75 38
7 70 35
8 70 35
9 70 35
10 60 30

The cool-down times will probably return to normal at the end of the Improve-mint event (June 02).

The other thing the data push did was to remove the timer of the Snap Pea seeds-for-ads item that will appear in the Shop on May 26.

I have now updated to version 8.9 of the game. Since I can now analyze it myself instead of relying on 3rd-party information, I've been able to discover additional things. Accordingly, I have updated some of the old posts on this blog to reflect my new findings: