——————————
Don’t know what the “NPC Damage Equation” is? It’s a mathematical equation that tells you how much damage the npc level will do so you can predict if your troops will be able to kill the npc or not. View your current attacking power in /army & get the NPC attacking power from the formula below (at the bottom).
——————————
It’s been a while since I made my first appearance in this community and I have been quite ever since. It’s time to come back, better than ever.
I’ve been studying NPC damages with the help of @CozmoKitten, with our old formula (200 * (1.10^NPCLVL)
) the distance between our answer and the correct equation was increasing. With over 40+ screenshots, we’ve figured out the formula (with the help of Neil’s hints). Here’s our story:
Original NPC Damage Math Equation Post Released - Sunday, January 14th 2024
I made my debut with this amazing equation in the community, this helped the community a lot to understand the bot’s behind the scenes mechanics. @CozmoKitten contacts me that same day with what he could figure out (he also tried prior).
Hint #1 Released - Monday, January 15th 2024
@Neil tells us more about the bot by giving us a hint - which seems to be now deleted. It was in a post where he was congratulating us for getting so close to the formula.
Here’s the hint: “You may be close but too blind to see it. If one is correct, doesn’t mean everything else is too.”
We didn’t understand much at this point, but from what we knew at that time:
- Damage was exponential
- 200 \times (1.10^{NPCLVL-1}) was almost the correct equation - just needed a few fixes here and there.
The journey starts
On that same day - me and Cozmo made a plan to figure this out. @CozmoKitten was going to play through the bot with ONLY infantries and document ALL of the attacks, no. matter. what. I appreciate the dedication Cozmo put into this, really. He helped so much so please ya’ll, this isn’t just me.
Hint #2 - Wednesday, January 17th 2024
@Neil came back to us with another hint, on the “Obtaining an API Key” post at the bottom. “You are mere decimals away from reaching it”
From this, we knew it was something to do with 1.10.
Will of Steel Enjoyers Server
I created a server where people could enjoy interesting facts about Will of Steel which also acted as a way for me or @Neil to talk about the bot itself.
We created a hints channel since Neil asked and he made a bot where we’d have a certain amount of luck to get a hint and the bot would tell us when we did (we had to run / commands)
Hint #3 - The first Hint on WoS Enjoyers - Saturday, January 27th 2024
“The market will be very beneficial”
After this hint we looked through the market and discovered a new Item being added “Mystery Scroll”.

We checked and there was one for sale for 9,999

@CozmoKitten instantly bought it and tried to /apply it (our first thought) but that failed.
WE FOUND A HIDDEN COMMAND?!?!
We found /item, which only gave a good response for the people with the “Mystery Scroll” item. Which stated:
“The first advancement times neves removed from times times times discovery date, then add the square square count of all advancements plus yourself times all that by count of _____.”

For people without the item, it would respond with: “We do not have the same belief, please do not talk to me.”
We also found /donate and we knew the “donation” we had to make was the number we got from the above equation. This was a dialogue NPC meaning it acted like it was saying stuff. Here are the dialogues:
NPC Comploter: Hello Adventurer!
NPC Comploter: Are you an NPC Enemy?
NPC Comploter: If you are, why don’t you offer some rubies to show your belief in the downfall of the NPC?
NPC Comploter: It is said that the NPC is the hardest to beat.
NPC Comploter: If you show your belief, maybe we will be able to Conquer the NPC.
Video Link of Dialogue
Hint #4 - Friday, February 2nd 2024
“Neves = zero”
Before this hint, we were talking quite a bit about finding out what “neves” meant in the equation above. This meant that neves was zero so we found an answer, but me and Cozmo thought it was too easy and dug into it.
Hint #5 - Saturday, February 3rd 2024
We got a new hint “Young Sheldon Season 6 Episode 4. Zero” - which was later deleted
“Nothing can not exist because to speak of something is to speak of something that exists.”
Which I believe is what the episode 4 was about. This meant that the previous hint (neves = zero) was not just a plain answer to what neves is.
Hint #6 - Saturday, February 3rd 2024
“You may forget your roots - the world won’t.”
We weren’t sure what this hint meant. (Added later on: after talking with Neil after the quest was over, he explained that this meant we were correct at some point before and were going in the wrong direction)
Hint #7 - we are dumb - Tuesday, February 20th 2024
Yup 7 hints and still nothing useful. We were getting it right though.
“flipping”
We really didn’t know what this meant but after some thinking I figured out that neves flipped would be seven. I told Cozmo and WE FINALLY KNEW WHAT NEVES IS! I hate you @Neil for this.
Hint #8 and #9 - Saturday, March 9th 2024
“How does 1 + ½ + ⅓ + ¼ + ⅕ … lead to infinity?”
“Something never happens twice, the past time is gone.”
We didn’t find out what this meant and still don’t know. The answer to the 8th hint is the Harmonic Rythme.
Hint #10 - Saturday, March 23rd 2024
“Carbon Oxygen Uranium Nitrogen Thallium Oxygen Fluorine Einsteinium Vanadium Einsteinium Nitrogen Tennessine”
After taking the symbols of all of these items we were left with some words (assuming the old symbol for Einsteinium was used in preparation of this hint, E and not Es):
- COUNT OF EVENT
Let’s go back to the equation. We had the answer of basically everything except the “first advancement”, “number of advancement” and “count of _____”.
… times all that by count of _____
We knew the answer was events as it’s a 5 letter word and matched the number of underscores and was indeed a confirmed hint. So we calculated and put the value in.
Hint #11 - THE FINAL HINT - Saturday, March 30th 2024
“Every number’s square root is 1, it just takes more time to achieve it.”
Since we had sqrt(sqrt(count of all advancements)). Which didn’t really help UNTIL we realized it was to the power/exponent of 2 (aka squaring a number) not square root.
WE FOUND THE ANSWER TO IT! - Wednesday, April 17th 2024
I figured out a “advancement” meant a update. Hence we had all the answers to the equation. Here’s a breakdown:
- The first advancement - 6823 - 6th of the 8th Month (August) in year 2023 (Date of the first update)
- times neves - * 7
- times times times - * 3
- discovery date - 14124 - 14th of the 1st Month (January) in year 2024. This is date I posted my original NPC Damage Equation
- then add the square square count of all advancements - (8^2)^2 = 8^4 = 8 \times 8 \times 8 \times 8
- plus yourself - + the number of characters in your username
- times all that by the count of _____ - times all of that by the count of events = 4
The equation is: 6823 \times 7 - 3 \times 14124 + (8 \times 8 \times 8 \times 8) + usernameChars \times 4
Answer for us was: 37,984
WE FOUND IT - Saturday, April 20th 2024
@CozmoKitten had been grinding away to get 37,984
to donate away to the NPC Comploter.
We just had this message:
216731.488317
50
We knew that the first number was the damage done and the second was the level. Time for brute forcing. We already knew that the first level killed 6.6bar (repeating) because @primedust told Cozmo a while back.
WE FOUND IT! After finding it, I used my prior equation and made the correct adjustments to get this:
f(x) = 1.15 ^ {x-1} \times 200
THERE YOU GO!
Here’s a quick Python script to calculate how much power/troops you need for an attack (by @CozmoKitten):
troopAttacks = {1: 30,2: 50,3: 90,4: 150,5: 10,6: 15,7: 15,8: 30}
while True:
print('Select a Troop Type\n1: Infantry\n2: Cavalry\n3: Artillery\n4: Assassin\n5: Bowmen\n6: Big Bowmen\n7: Heavy Men\n8: King Guards')
selection = input('Input Selection: ')
if selection.isdigit():
selection = int(selection)
if selection > 0 and selection <= 8:
break
else:
print('Invalid Input')
else:
print('Invalid Input!')
while True:
lowest = input('Lowest level to return: ')
if lowest.isdigit():
highest = input('Highest level to return: ')
if highest.isdigit():
for x in range(int(lowest), int(highest)+1):
print(f'{x}: {round(1.15**(x-1)*200, 2)} power, {round((1.15**(x-1)*200/(troopAttacks[int(selection)])), 0)} troops, {1.15**(x-1)*200/(troopAttacks[int(selection)])} actual')
break
else:
print('Invalid Input!')
else:
print('Invalid Input!')