[REPORTED BUT PROBABLY NOT A BUG] Skill boost at 300 gold is incorrect

Platform, device version and operating system:
Someone in my guild found this on their iPad. I confirmed it on my Android v8.1.0 OnePlus 5T.

Screenshot or image:

What you were expecting to happen, and what actually happened:
Since Skeleton Key has a boost ratio 3:1, when I have 300 gold, I would expect a boost of +100. Instead, the game gives a boost of +102. I’m not sure where the extra 2 is coming from.

The actual damage dealt when I case includes the +102 boost, not the expected +100 boost.

How often does this happen? When did it begin happening?
I only noticed it because someone else mentioned it to me today. I’ve been able to replicate it every time in explore level 12. I didn’t check other game modes.

Steps to make it happen again

  1. Here is the team I used [6498,6498,1214,6629,3037,3,1,1,1,2,1,2,14017]
  2. Start Wild Plain explore level 12 (I’m guessing others would work but this is what I did).
  3. Max out your gold to 300.
  4. Click on Skeleton Key and you’ll see the higher than expected boost.

PS:
To everyone upset about the Skeleton Key nerf, I’m so sorry I’m pointing out it wasn’t nerfed properly. Forgive me. :sob:

Edit: I renamed the post title from “Skeleton Key boost…” to “Skill boost…” since Egg Thief also has the same problem.

3 Likes

Egg Thief has the same issue. Photo from someone else in my guild:

Here is a guess why it’s showing as 102.

Stat caps are 1,000, but it is possible to have 1005 as a stat cap. Basically how that works is if you get a plus 8 boost at 997, it will actually show 1005, rather than 1,000. If you got 7, 1004.

What might be happening is when you get your 300 gold cap, say you are at 293 gold, get 10 from a gold match (your gold cap allows you to earn more from a 4/5 match etc, or say 15 from light fingers), it will cap off at 300, but the gold collected would be over 300.

I wonder therefore that the gold cap might actually be 305 or 306, a bit like the stats cap, you only get 300 gold bonus when collecting and the game shuts off and includes the minimal amount that you went over for damage. You can’t raise the 300/300 but if you go over, it will fix it at 300, but give you up to the hard cap for damage.

A way of testing would be to take your gold over 300 from a 4 match perhaps, see if you ever get 101, i.e. 304 total or less.

3 Likes

Additional alternative explanation:
300x0.33=99
300x0.34=102

Guess we know which one their programmers went for?
:thinking: :stuck_out_tongue: :vulcan_salute:
#GoWprogrammingskills #MoreResearchNeeded

5 Likes

Don’t think it’s the above, some rounding up is occurring in relation to gold accumulation as per @AMT

Boost matched from 0:148, but when gold reached 168/300, the boost is not divisable by 3. 168/300, boost shown +57, should be +56. I think after 50% of 300, there’s a slight boost, gold matched to at least 148, I had 2 goes and didn’t land on 150 exact, but think that’s it.

So slooow, I forgot Light Fingers :cold_sweat:

FWIW gold farming is much easier with fast, competent E12 teams than the old key teams.

1 Like

You’re completely right with your guess. This is how the game file describes the spell cast:

{
	"Target": "Self",
	"Amount": 34,
	"Type": "CountMyGold"
},

So what does the game do? The boost is calculated by dividing 100 / Amount, in our case 100 / 34 = 2.9411764.... The total amount (300 gold) is now divided by this, and yields 300 / 2.94... = 102

Hope that sheds some light. In order to fix this issue, I see two possibilities:
A) What my bot does: cutting off the slack and dividing by the next nearest Integer (in that case 3 instead of 2.94117647)
B) provide more decimal places in the spell Id 7953, e.g. `“Amount”: 33.333333333334, which would then yield a number way closer to the desired result.

5 Likes

Thanks for the analysis @gary_dils! This is cool.

Third possibility which is a variant of your B). I’m guessing they choose 34 as they dictated that Amount must be an integer. If it could support decimals, instead of your 33.333333333334, just make it 0.333333333334. Multiply the total amount (300 gold) by that.

Only the devs know how this is done. I just enjoy trying to figure out what people tried to do and how they did it. /conspiracy Watch @Saltypatra come here now and say this is way off. This was decided thousands of years ago by a magical alien. :stuck_out_tongue_closed_eyes: That’d be cool if true though. I’d accept that response.

What the heck? If the boost ratio is 3:1 why not just simply divide the current amount with 3 and round it up or down. Overcomplicated!

1 Like

To be more specific on what happens here:
If Amount > 100 then the spell boost is [xAmount/100], e.g. Amount = 200 leads to [x2].
If Amount <= 100 then the spell boost is [100/Amount:1], e.g. Amount = 34 leads to [3:1]

So they coded two different calculations into one number, hence the “overcomplication”.

HTH, Gary.

Indeed, that is how we used to do it in the 80s, 90s, and early 00s: it would appear that current Unity programming is no longer that straightforward.
:thinking: :man_facepalming: :vulcan_salute:
#GoWprogrammingskills

We already gave them a punch in the guts with this bug report, I don’t want to harass them because of their tech debt any further.
Game development never has enough budget, and never has enough time. What you see here is the result of that combination. Please don’t (only) blame the devs for that situation.

3 Likes

There are also terms of speed. From what i recall: Integer only operations are faster than: converting integer into float, do float operations and convert it back do integer. That’s ofc assuming all number in game are stored as integers.

It doesn’t matter when you have a single program running, but it matters if you have milions of programs running concurrently.

So you say they chose to develop the game in unity instead of rewriting it n times for different platforms in their native language and at the end they go for optimizations of calculations. Sure.

And why not?

They can go for Unity to have game easily portable onto many devices at once (same as people loved developing things in java because most JVM work very similiar) and they can also limit number of float operations for things to scale…