tuipet 0.2.331__tar.gz → 0.2.332__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. {tuipet-0.2.331/src/tuipet.egg-info → tuipet-0.2.332}/PKG-INFO +1 -1
  2. {tuipet-0.2.331 → tuipet-0.2.332}/pyproject.toml +1 -1
  3. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/pet.py +44 -0
  4. {tuipet-0.2.331 → tuipet-0.2.332/src/tuipet.egg-info}/PKG-INFO +1 -1
  5. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet.egg-info/SOURCES.txt +1 -0
  6. tuipet-0.2.332/tests/test_stage_arrival.py +59 -0
  7. {tuipet-0.2.331 → tuipet-0.2.332}/LICENSE +0 -0
  8. {tuipet-0.2.331 → tuipet-0.2.332}/README.md +0 -0
  9. {tuipet-0.2.331 → tuipet-0.2.332}/setup.cfg +0 -0
  10. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/__init__.py +0 -0
  11. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/adventure.py +0 -0
  12. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/adventurescreen.py +0 -0
  13. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/anim.py +0 -0
  14. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/app.py +0 -0
  15. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/assistscreen.py +0 -0
  16. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/battle.py +0 -0
  17. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/battlefx.py +0 -0
  18. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/battlescreen.py +0 -0
  19. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/cloudsync.py +0 -0
  20. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/attr_icons.json +0 -0
  21. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/backgrounds.json.gz +0 -0
  22. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/battle_overlays.json +0 -0
  23. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/careEffect.csv +0 -0
  24. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/digicoreMenuConfig.csv +0 -0
  25. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/digimon.csv +0 -0
  26. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/dropRate.csv +0 -0
  27. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/effects.json.gz +0 -0
  28. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/eggUnlock.csv +0 -0
  29. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/eggs.json.gz +0 -0
  30. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/elementAffinity.csv +0 -0
  31. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/enemies.csv +0 -0
  32. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/evolutions.csv +0 -0
  33. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/fieldAffinity.csv +0 -0
  34. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/foods.csv +0 -0
  35. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/habitats.csv +0 -0
  36. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/hp_dummies.json +0 -0
  37. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/icons.json.gz +0 -0
  38. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/items.csv +0 -0
  39. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/lines.csv +0 -0
  40. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/lootTable.csv +0 -0
  41. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/maps.csv +0 -0
  42. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/orbs.json.gz +0 -0
  43. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/shopConsumable.csv +0 -0
  44. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/alarm.wav +0 -0
  45. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/angry.wav +0 -0
  46. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/attack.wav +0 -0
  47. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/attackHit.wav +0 -0
  48. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/battle.wav +0 -0
  49. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/cancel.wav +0 -0
  50. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/champion.wav +0 -0
  51. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/click.wav +0 -0
  52. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/compatible.wav +0 -0
  53. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/confirm.wav +0 -0
  54. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/death.wav +0 -0
  55. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/eat.wav +0 -0
  56. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/error.wav +0 -0
  57. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/evolve.wav +0 -0
  58. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/happy.wav +0 -0
  59. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/hatch.wav +0 -0
  60. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/jogress.wav +0 -0
  61. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/largePoop.wav +0 -0
  62. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/lastBite.wav +0 -0
  63. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/lose.wav +0 -0
  64. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/menu.wav +0 -0
  65. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/mischief.wav +0 -0
  66. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/poop.wav +0 -0
  67. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/refuse.wav +0 -0
  68. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/reward.wav +0 -0
  69. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/scroll.wav +0 -0
  70. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/select.wav +0 -0
  71. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/smallPoop.wav +0 -0
  72. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/startBattle.wav +0 -0
  73. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/strongAttack.wav +0 -0
  74. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/strongHit.wav +0 -0
  75. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/trainhit.wav +0 -0
  76. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/wash.wav +0 -0
  77. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/win.wav +0 -0
  78. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/wind.wav +0 -0
  79. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sprites.json.gz +0 -0
  80. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/tournies.csv +0 -0
  81. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/towns.csv +0 -0
  82. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/zones.csv +0 -0
  83. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data.py +0 -0
  84. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/deathscreen.py +0 -0
  85. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/digicorescreen.py +0 -0
  86. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/dnascreen.py +0 -0
  87. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/egg.py +0 -0
  88. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/eggselectscreen.py +0 -0
  89. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/evolution.py +0 -0
  90. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/feedscreen.py +0 -0
  91. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/grid.py +0 -0
  92. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/habitatscreen.py +0 -0
  93. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/jogress.py +0 -0
  94. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/jogressscreen.py +0 -0
  95. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/lines.py +0 -0
  96. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/lobbyscreen.py +0 -0
  97. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/loot.py +0 -0
  98. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/menu.py +0 -0
  99. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/net.py +0 -0
  100. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/optionsscreen.py +0 -0
  101. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/persistence.py +0 -0
  102. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/placeholder.py +0 -0
  103. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/render.py +0 -0
  104. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/shop.py +0 -0
  105. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/shopscreen.py +0 -0
  106. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/sound.py +0 -0
  107. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/strikefx.py +0 -0
  108. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/theme.py +0 -0
  109. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/themescreen.py +0 -0
  110. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/titlescreen.py +0 -0
  111. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/tournament.py +0 -0
  112. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/tournamentscreen.py +0 -0
  113. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/townscreen.py +0 -0
  114. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/training.py +0 -0
  115. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/transportscreen.py +0 -0
  116. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/update.py +0 -0
  117. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/weather.py +0 -0
  118. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet.egg-info/dependency_links.txt +0 -0
  119. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet.egg-info/entry_points.txt +0 -0
  120. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet.egg-info/requires.txt +0 -0
  121. {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet.egg-info/top_level.txt +0 -0
  122. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_adventure.py +0 -0
  123. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_adventure_math.py +0 -0
  124. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_adventure_scenery.py +0 -0
  125. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_album_dex.py +0 -0
  126. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_anim_canon.py +0 -0
  127. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_anim_timing.py +0 -0
  128. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_announce.py +0 -0
  129. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_audit_fixes.py +0 -0
  130. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_auto_care.py +0 -0
  131. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_battle.py +0 -0
  132. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_battle_math.py +0 -0
  133. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_bedtime.py +0 -0
  134. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_birthday.py +0 -0
  135. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_body_math.py +0 -0
  136. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_care_asleep.py +0 -0
  137. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_care_bonus.py +0 -0
  138. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_data.py +0 -0
  139. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_dead_gate.py +0 -0
  140. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_death.py +0 -0
  141. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_digicore.py +0 -0
  142. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_digimemory.py +0 -0
  143. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_discipline.py +0 -0
  144. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_effects_integrity.py +0 -0
  145. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_egg_economy.py +0 -0
  146. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_egg_unlock.py +0 -0
  147. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_egg_unlock_math.py +0 -0
  148. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_energy_system.py +0 -0
  149. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_evolution.py +0 -0
  150. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_evolution_math.py +0 -0
  151. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_evolution_system.py +0 -0
  152. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_feed.py +0 -0
  153. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_feeding_math.py +0 -0
  154. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_filth_system.py +0 -0
  155. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_fx.py +0 -0
  156. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_gift_birthday_math.py +0 -0
  157. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_habitat.py +0 -0
  158. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_habitat_math.py +0 -0
  159. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_hud.py +0 -0
  160. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_hunger.py +0 -0
  161. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_item_effects.py +0 -0
  162. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_item_heal.py +0 -0
  163. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_jogress.py +0 -0
  164. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_jogress_math.py +0 -0
  165. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_line_curation.py +0 -0
  166. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_lines.py +0 -0
  167. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_lobby.py +0 -0
  168. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_lobby_screens.py +0 -0
  169. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_medicine.py +0 -0
  170. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_messages.py +0 -0
  171. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_mood_system.py +0 -0
  172. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_mortality_math.py +0 -0
  173. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_msg_strip.py +0 -0
  174. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_nav_quit.py +0 -0
  175. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_night_palette.py +0 -0
  176. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_obedience_system.py +0 -0
  177. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_options.py +0 -0
  178. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_panel_smoke.py +0 -0
  179. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_performance.py +0 -0
  180. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_persistence.py +0 -0
  181. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_persistence_audit.py +0 -0
  182. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_pet_effect.py +0 -0
  183. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_poop_model.py +0 -0
  184. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_poop_placement.py +0 -0
  185. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_protocol_math.py +0 -0
  186. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_rank_system.py +0 -0
  187. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_refusal.py +0 -0
  188. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_refusal_math.py +0 -0
  189. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_robustness.py +0 -0
  190. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_save_integrity.py +0 -0
  191. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_screen_sweep.py +0 -0
  192. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sfx_scroll.py +0 -0
  193. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_shop.py +0 -0
  194. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_shop_economy.py +0 -0
  195. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_shop_math.py +0 -0
  196. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sickness_system.py +0 -0
  197. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sleep.py +0 -0
  198. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sleep_system.py +0 -0
  199. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sleep_weather_math.py +0 -0
  200. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sound.py +0 -0
  201. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_status_box.py +0 -0
  202. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_status_icons.py +0 -0
  203. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sync.py +0 -0
  204. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_theme.py +0 -0
  205. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_toilet.py +0 -0
  206. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_tournament.py +0 -0
  207. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_town.py +0 -0
  208. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training.py +0 -0
  209. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training_facing.py +0 -0
  210. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training_hp.py +0 -0
  211. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training_math.py +0 -0
  212. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training_strike.py +0 -0
  213. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training_system.py +0 -0
  214. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_ui_stats.py +0 -0
  215. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_update.py +0 -0
  216. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_verx.py +0 -0
  217. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_weight_system.py +0 -0
  218. {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_win_eggs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tuipet
3
- Version: 0.2.331
3
+ Version: 0.2.332
4
4
  Summary: A terminal virtual pet (Digimon V-Pet style) rendered with halfblock sprites, built on data extracted from DVPet.
5
5
  Author-email: Joel Taylor <joeltaylor734@gmail.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tuipet"
3
- version = "0.2.331"
3
+ version = "0.2.332"
4
4
  description = "A terminal virtual pet (Digimon V-Pet style) rendered with halfblock sprites, built on data extracted from DVPet."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -155,6 +155,16 @@ ITEM_INTEREST_HIGH_TIMER = 80 # ItemInterestHighTimer (disposition -1)
155
155
  PERSONALITY_MOOD_MATCH = 10 # ConsumablePersonalityMatchMoodChange
156
156
  PERSONALITY_MOOD_UNMATCH = -10 # ConsumablePersonalityUnmatchMoodChange
157
157
  EGG_MOOD = 100 # EggMood: a new egg starts warm (Evolution.egg)
158
+ # Evolution.java per-stage ARRIVAL setters (egg/hatch audit 2026-07-06; the
159
+ # shipped ranges are all min==max -> deterministic)
160
+ FRESH_MOOD = -10 # FreshMood: born grumpy (it's a newborn)
161
+ FRESH_OBEDIENCE = 75 # FreshObedienceMin/Max: born TRUSTING
162
+ START_NUTRITION = 6 # StartProtein/StartMineral/StartVitamin
163
+ IN_TRAINING_OBEDIENCE = 50 # InTrainingObedienceMin/Max: toddler rebellion cap
164
+ IN_TRAINING_SLEEP_LAPSE = 360 # InTrainingSleepLapse: wakes with real bedtime pressure
165
+ ROOKIE_OBED_GOOD = 50 # RookieGoodObedience (Happy daily majority)
166
+ ROOKIE_OBED_DEFAULT = 25 # RookieDefaultObedience (Neutral majority)
167
+ ROOKIE_OBED_BAD = 0 # RookieBadObedience (anything else, ties included)
158
168
  # the missed-day / birthday system (setTimeToAge): each game day of AGE the pet
159
169
  # has a birthday judged by the day's MAJOR mood and its missed-day tally
160
170
  MOOD_RECORD_MIN = 5 # MoodRecordMin: sample the mood tier every 5 game-min
@@ -2411,6 +2421,40 @@ class Pet:
2411
2421
  def evolve_to(self, num):
2412
2422
  was_young = self.stage in ("Egg", "Fresh", "InTraining", "Rookie")
2413
2423
  _req = self._become(num)
2424
+ # Evolution.java's per-stage ARRIVAL setters (egg/hatch audit
2425
+ # 2026-07-06 -- none of these were ported; the missing fresh()
2426
+ # obedience 75 was the deepest root of the misbehaving-babies era):
2427
+ if self.stage == "Fresh":
2428
+ # fresh(): born TRUSTING (obedience 75) but grumpy (-10 mood),
2429
+ # hungry, full of energy, with a starter nutrition base 6/6/6
2430
+ lo, hi = self.ideal_temp
2431
+ self.temp = (lo + hi) // 2
2432
+ self._set_mood(FRESH_MOOD)
2433
+ self._set_obedience(FRESH_OBEDIENCE)
2434
+ self.strength = 0
2435
+ self.hunger = 0
2436
+ self.energy = self.max_energy
2437
+ self.nutr_protein = self.nutr_mineral = self.nutr_vitamin = START_NUTRITION
2438
+ elif self.stage == "InTraining":
2439
+ # inTraining(): toddler rebellion -- obedience above 50 KNOCKS
2440
+ # BACK to 50; it wakes with the lights on and real bedtime
2441
+ # pressure (sleepLapse 360)
2442
+ if self.obedience > IN_TRAINING_OBEDIENCE:
2443
+ self._set_obedience(IN_TRAINING_OBEDIENCE)
2444
+ self.asleep, self.nap = False, False
2445
+ self.lights = True
2446
+ self.sleep_lapse = IN_TRAINING_SLEEP_LAPSE
2447
+ elif self.stage == "Rookie":
2448
+ # rookie(): the childhood report card SETS obedience -- a Happy
2449
+ # daily-mood majority earns 50, Neutral 25, anything else 0
2450
+ # (a TIE is Mood.None -> the switch default -> bad, canon exact)
2451
+ counts = self.daily_mood
2452
+ best = max(counts.values()) if counts else 0
2453
+ tops = [k for k, v in counts.items() if v == best and best > 0]
2454
+ major = tops[0] if len(tops) == 1 else None
2455
+ self._set_obedience(ROOKIE_OBED_GOOD if major == "Happy"
2456
+ else ROOKIE_OBED_DEFAULT if major == "Neutral"
2457
+ else ROOKIE_OBED_BAD)
2414
2458
  if was_young and self.stage == "Champion":
2415
2459
  # randOnChampion (taste/rank audit 2026-07-06): the childhood-care
2416
2460
  # tally becomes the adult temperament
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tuipet
3
- Version: 0.2.331
3
+ Version: 0.2.332
4
4
  Summary: A terminal virtual pet (Digimon V-Pet style) rendered with halfblock sprites, built on data extracted from DVPet.
5
5
  Author-email: Joel Taylor <joeltaylor734@gmail.com>
6
6
  License-Expression: MIT
@@ -195,6 +195,7 @@ tests/test_sleep.py
195
195
  tests/test_sleep_system.py
196
196
  tests/test_sleep_weather_math.py
197
197
  tests/test_sound.py
198
+ tests/test_stage_arrival.py
198
199
  tests/test_status_box.py
199
200
  tests/test_status_icons.py
200
201
  tests/test_sync.py
@@ -0,0 +1,59 @@
1
+ """Evolution.java's per-stage ARRIVAL setters (egg/hatch audit 2026-07-06):
2
+ fresh()/inTraining()/rookie() SET the newcomer's state on top of digivolve --
3
+ the missing fresh() obedience 75 was the deepest root of the misbehaving-
4
+ babies era (canon babies are born TRUSTING; the 0 was pre-hatch defaultData)."""
5
+ from tuipet.pet import (Pet, FRESH_MOOD, FRESH_OBEDIENCE, START_NUTRITION,
6
+ IN_TRAINING_OBEDIENCE, IN_TRAINING_SLEEP_LAPSE,
7
+ ROOKIE_OBED_GOOD, ROOKIE_OBED_DEFAULT, ROOKIE_OBED_BAD)
8
+
9
+
10
+ def _egg():
11
+ p = Pet.new_egg(egg_type=0)
12
+ p.world_seconds = 10 * 60.0
13
+ return p
14
+
15
+
16
+ def test_a_hatchling_is_born_trusting_grumpy_and_hungry():
17
+ p = _egg()
18
+ p.hatching = True
19
+ p._hatch_t = 0.0
20
+ assert p.advance_hatch(0.1) # the egg hatches
21
+ assert p.stage == "Fresh"
22
+ assert p.obedience == FRESH_OBEDIENCE == 75 # born trusting
23
+ assert p.mood == FRESH_MOOD == -10 # ...and grumpy
24
+ assert p.hunger == 0 and p.strength == 0 # born hungry, no effort yet
25
+ assert p.energy == p.max_energy # full of beans
26
+ assert (p.nutr_protein, p.nutr_mineral, p.nutr_vitamin) == (6, 6, 6)
27
+ lo, hi = p.ideal_temp
28
+ assert p.temp == (lo + hi) // 2
29
+
30
+
31
+ def test_intraining_arrival_is_the_toddler_rebellion():
32
+ p = Pet(num=2, stage="Fresh", attribute="Vaccine")
33
+ p.world_seconds = 10 * 60.0
34
+ p.obedience = 75
35
+ p.asleep, p.lights = True, False
36
+ p.evolve_to(12) # any InTraining form
37
+ assert p.stage == "InTraining"
38
+ assert p.obedience == IN_TRAINING_OBEDIENCE == 50 # knocked back down
39
+ assert not p.asleep and p.lights # wakes, lights on
40
+ assert p.sleep_lapse == IN_TRAINING_SLEEP_LAPSE == 360
41
+ q = Pet(num=2, stage="Fresh", attribute="Vaccine")
42
+ q.world_seconds = 10 * 60.0
43
+ q.obedience = 10
44
+ q.evolve_to(12)
45
+ assert q.obedience == 10 # only re-set when ABOVE the cap
46
+
47
+
48
+ def test_rookie_arrival_grades_the_childhood():
49
+ for moods, want in ((dict(Happy=5, Neutral=1), ROOKIE_OBED_GOOD),
50
+ (dict(Neutral=5, Happy=1), ROOKIE_OBED_DEFAULT),
51
+ (dict(Unhappy=5), ROOKIE_OBED_BAD),
52
+ (dict(Happy=3, Neutral=3), ROOKIE_OBED_BAD)): # a TIE is Mood.None -> bad
53
+ p = Pet(num=12, stage="InTraining", attribute="Vaccine")
54
+ p.world_seconds = 10 * 60.0
55
+ p.obedience = 99
56
+ for k, v in moods.items():
57
+ p.daily_mood[k] = v
58
+ p.evolve_to(25) # any Rookie form
59
+ assert p.obedience == want, (moods, p.obedience)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes