Usually I see "Zebras hate you for no reason" if trading with zebras fails, but sometimes I see "Your kittens return empty-pawed".

What is the difference?

Saw it again:

Year 490, Summer: Your kittens return empty-pawed
Year 490, Summer: You have sent 2 trade caravans

I was not full on either iron or titanium.

  • There just isn't any resource that you obtained during the trade, but no clue how this can occur. Aren't your stocks full or anything? – Mathias711 Dec 1 '15 at 15:07
  • Was that really a zebra trade? That message should only show up for dragons and leviathans. – user2357112 supports Monica Dec 2 '15 at 5:28
  • Yep, it was a zebra trade. – Jason S Dec 2 '15 at 13:11

Looking at the code of the game, it seems that you will only receive the "[Race] hate you for no reason" message for single trade missions, while you will receive the "Your kittens return empty-pawed" message if you send multiple trade missions at once and they all fail, e.g. from hostile relations, or failed trade chances from Dragons or Leviathans.

On a more technical level...

Four functions are of particular significance here: trade, tradeMultiple, tradeInternal, and printYieldOutput. trade is called for single trade missions, tradeMultiple is called for multiple trade missions. Both functions call tradeInternal to determine the results of each individual trade mission.

tradeInternal will normally print out the hostile/friendly messages, but it can be passed a boolean value to specify that these messages should be suppressed, which tradeMultiple does. tradeInternal will return a null value if you get the "[Race] hate you" result, otherwise it will return the details of what you got. Even if the trade fails for reasons other than hostile relations, tradeInternal will still return an empty set.

trade will pass the results from tradeInternal directly into printYieldOutput, while tradeMultiple will gather the results into a set before passing them. Herein lies the determining factor for whether the "Your kittens return empty-pawed" message will be shown. If printYieldOutput receives a null value, it will effectively do nothing. However, if it receives an empty set, it will instead print the message in question.

Source: Kittens Game BitBucket repository, lines 418 to 588 as of posting

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.