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.
- {tuipet-0.2.331/src/tuipet.egg-info → tuipet-0.2.332}/PKG-INFO +1 -1
- {tuipet-0.2.331 → tuipet-0.2.332}/pyproject.toml +1 -1
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/pet.py +44 -0
- {tuipet-0.2.331 → tuipet-0.2.332/src/tuipet.egg-info}/PKG-INFO +1 -1
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet.egg-info/SOURCES.txt +1 -0
- tuipet-0.2.332/tests/test_stage_arrival.py +59 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/LICENSE +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/README.md +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/setup.cfg +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/__init__.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/adventure.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/adventurescreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/anim.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/app.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/assistscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/battle.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/battlefx.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/battlescreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/cloudsync.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/attr_icons.json +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/backgrounds.json.gz +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/battle_overlays.json +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/careEffect.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/digicoreMenuConfig.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/digimon.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/dropRate.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/effects.json.gz +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/eggUnlock.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/eggs.json.gz +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/elementAffinity.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/enemies.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/evolutions.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/fieldAffinity.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/foods.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/habitats.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/hp_dummies.json +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/icons.json.gz +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/items.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/lines.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/lootTable.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/maps.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/orbs.json.gz +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/shopConsumable.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/alarm.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/angry.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/attack.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/attackHit.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/battle.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/cancel.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/champion.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/click.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/compatible.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/confirm.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/death.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/eat.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/error.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/evolve.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/happy.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/hatch.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/jogress.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/largePoop.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/lastBite.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/lose.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/menu.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/mischief.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/poop.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/refuse.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/reward.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/scroll.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/select.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/smallPoop.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/startBattle.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/strongAttack.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/strongHit.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/trainhit.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/wash.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/win.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sounds/wind.wav +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/sprites.json.gz +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/tournies.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/towns.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data/zones.csv +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/data.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/deathscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/digicorescreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/dnascreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/egg.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/eggselectscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/evolution.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/feedscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/grid.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/habitatscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/jogress.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/jogressscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/lines.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/lobbyscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/loot.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/menu.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/net.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/optionsscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/persistence.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/placeholder.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/render.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/shop.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/shopscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/sound.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/strikefx.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/theme.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/themescreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/titlescreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/tournament.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/tournamentscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/townscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/training.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/transportscreen.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/update.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet/weather.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet.egg-info/dependency_links.txt +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet.egg-info/entry_points.txt +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet.egg-info/requires.txt +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/src/tuipet.egg-info/top_level.txt +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_adventure.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_adventure_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_adventure_scenery.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_album_dex.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_anim_canon.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_anim_timing.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_announce.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_audit_fixes.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_auto_care.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_battle.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_battle_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_bedtime.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_birthday.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_body_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_care_asleep.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_care_bonus.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_data.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_dead_gate.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_death.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_digicore.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_digimemory.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_discipline.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_effects_integrity.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_egg_economy.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_egg_unlock.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_egg_unlock_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_energy_system.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_evolution.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_evolution_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_evolution_system.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_feed.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_feeding_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_filth_system.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_fx.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_gift_birthday_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_habitat.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_habitat_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_hud.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_hunger.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_item_effects.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_item_heal.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_jogress.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_jogress_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_line_curation.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_lines.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_lobby.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_lobby_screens.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_medicine.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_messages.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_mood_system.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_mortality_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_msg_strip.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_nav_quit.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_night_palette.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_obedience_system.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_options.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_panel_smoke.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_performance.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_persistence.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_persistence_audit.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_pet_effect.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_poop_model.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_poop_placement.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_protocol_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_rank_system.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_refusal.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_refusal_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_robustness.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_save_integrity.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_screen_sweep.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sfx_scroll.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_shop.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_shop_economy.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_shop_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sickness_system.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sleep.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sleep_system.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sleep_weather_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sound.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_status_box.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_status_icons.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_sync.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_theme.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_toilet.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_tournament.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_town.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training_facing.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training_hp.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training_math.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training_strike.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_training_system.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_ui_stats.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_update.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_verx.py +0 -0
- {tuipet-0.2.331 → tuipet-0.2.332}/tests/test_weight_system.py +0 -0
- {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.
|
|
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
|
|
@@ -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.
|
|
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
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|