tuipet 0.2.413__tar.gz → 0.2.415__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.413/src/tuipet.egg-info → tuipet-0.2.415}/PKG-INFO +1 -1
- {tuipet-0.2.413 → tuipet-0.2.415}/pyproject.toml +1 -1
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/app.py +4 -3
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/battle_overlays.json +1 -1
- tuipet-0.2.415/src/tuipet/data/effects.json.gz +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/training.py +26 -22
- {tuipet-0.2.413 → tuipet-0.2.415/src/tuipet.egg-info}/PKG-INFO +1 -1
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_training_facing.py +70 -9
- tuipet-0.2.413/src/tuipet/data/effects.json.gz +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/LICENSE +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/README.md +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/setup.cfg +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/__init__.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/adventure.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/adventurescreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/anim.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/arena.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/assistscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/battle.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/battlefx.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/battlescreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/bugscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/cloudsync.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/attr_icons.json +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/backgrounds.json.gz +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/careEffect.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/digicoreMenuConfig.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/digimon.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/dropRate.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/eggUnlock.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/eggs.json.gz +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/elementAffinity.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/enemies.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/evolutions.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/fieldAffinity.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/foods.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/habitats.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/hp_dummies.json +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/icons.json.gz +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/items.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/lines.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/lootTable.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/maps.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/orbs.json.gz +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/shopConsumable.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/alarm.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/angry.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/attack.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/attackHit.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/battle.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/cancel.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/champion.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/click.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/compatible.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/confirm.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/death.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/eat.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/error.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/evolve.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/happy.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/hatch.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/jogress.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/largePoop.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/lastBite.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/lose.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/menu.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/mischief.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/poop.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/refuse.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/reward.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/scroll.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/select.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/smallPoop.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/startBattle.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/strongAttack.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/strongHit.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/trainhit.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/wash.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/win.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sounds/wind.wav +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/sprites.json.gz +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/tournies.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/towns.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data/zones.csv +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/data.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/deathscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/digicorescreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/dnascreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/egg.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/eggselectscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/evolution.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/feedscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/grid.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/habitatscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/helpscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/itemfx.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/jogress.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/jogressscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/lines.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/lobbyscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/loot.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/menu.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/net.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/optionsscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/persistence.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/pet.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/placeholder.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/render.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/shop.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/shopscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/sound.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/strikefx.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/theme.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/themescreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/titlescreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/tournament.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/tournamentscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/townscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/transportscreen.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/update.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/weather.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet/world.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet.egg-info/SOURCES.txt +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet.egg-info/dependency_links.txt +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet.egg-info/entry_points.txt +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet.egg-info/requires.txt +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/src/tuipet.egg-info/top_level.txt +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_adventure.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_adventure_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_adventure_scenery.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_album_dex.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_anim_canon.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_anim_timing.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_announce.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_audit_fixes.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_auto_care.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_battle.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_battle_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_bedtime.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_birthday.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_body_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_bugreport.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_care_asleep.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_care_bonus.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_completeness_sweep.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_data.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_dead_gate.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_death.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_device_lines.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_digicore.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_digimemory.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_discipline.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_divergence.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_dna_charge.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_effects_integrity.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_egg_economy.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_egg_unlock.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_egg_unlock_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_energy_system.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_evolution.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_evolution_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_evolution_system.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_feed.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_feeding_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_filth_system.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_fx.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_gift_birthday_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_habitat.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_habitat_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_help.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_hint_strips.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_hud.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_humulos_eggs.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_hunger.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_item_effects.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_item_heal.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_itemfx.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_jogress.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_jogress_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_line_curation.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_lines.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_lobby.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_lobby_admin.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_lobby_screens.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_medicine.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_menu_bounds.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_messages.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_mood_system.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_mortality_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_msg_strip.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_nav_quit.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_night_palette.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_obedience_system.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_options.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_panel_smoke.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_performance.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_persistence.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_persistence_audit.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_pet_effect.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_poop_model.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_poop_placement.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_protocol_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_rank_system.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_refusal.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_refusal_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_robustness.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_save_integrity.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_scene_actors.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_screen_sweep.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_sfx_scroll.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_shop.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_shop_economy.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_shop_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_sickness_system.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_sleep.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_sleep_system.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_sleep_weather_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_sound.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_special_idles.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_stage_arrival.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_status_box.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_status_icons.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_sync.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_theme.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_toilet.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_tournament.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_town.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_town_eggs.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_training.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_training_hp.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_training_math.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_training_strike.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_training_system.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_ui_stats.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_update.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_verx.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_weight_system.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_whats_new.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_win_eggs.py +0 -0
- {tuipet-0.2.413 → tuipet-0.2.415}/tests/test_world.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.415
|
|
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
|
|
@@ -250,9 +250,10 @@ class TuiPetApp(App):
|
|
|
250
250
|
"""
|
|
251
251
|
# the release-news line (title-screen msg box, first launch per build) --
|
|
252
252
|
# UPDATE THIS WITH EVERY RELEASE that ships something player-visible
|
|
253
|
-
WHATS_NEW = ("
|
|
254
|
-
"
|
|
255
|
-
"window
|
|
253
|
+
WHATS_NEW = ("Training impacts hit BIG again: the orb-strike explosion is "
|
|
254
|
+
"back to its full 32x16 flash, and the punch drill's Hit!! "
|
|
255
|
+
"banner now takes over the whole window like the battle "
|
|
256
|
+
"banner.")
|
|
256
257
|
|
|
257
258
|
BINDINGS = [
|
|
258
259
|
# battle + jogress are LOBBY-ONLY (Joel 2026-07-07: "battles and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"battle_banner": [["01111101111101111101111101111101", "00111000111000111000111000111000", "00010000010000010000010000010000", "00000000000000000000000000000000", "01111001100011110111101100011110", "00000101110001100011001100011000", "01100101101001100011001100011000", "01111001100101100011001100011110", "01100101111101100011001100011000", "01100101100101100011001100011000", "01100101100101100011001100011000", "01111001100101100011000111011110", "00000000000000000000000000000000", "00001000001000001000001000001000", "00011100011100011100011100011100", "10111110111110111110111110111110"], ["10000010000010000010000010000010", "11000111000111000111000111000111", "11101111101111101111101111101111", "11111111111111111111111111111111", "10000110011100001000010011100001", "11111010001110011100110011100111", "10011010010110011100110011100111", "10000110011010011100110011100001", "10011010000010011100110011100111", "10011010011010011100110011100111", "10011010011010011100110011100111", "10000110011010011100111000100001", "11111111111111111111111111111111", "11110111110111110111110111110111", "11100011100011100011100011100011", "01000001000001000001000001000001"]], "battle_vs": [["11111100000000000000000000000000", "11111011111111111111111111111111", "11110111111111111111111111111111", "11101110000000000000000000000000", "11011100000000000000000000000000", "00111000111110011001100110000000", "11110001100110011011000110000000", "11100001100110011110000110000000", "00000001100110011110000110000111", "00000001100110011011000000001111", "00000001111100011001100110011100", "00000000000000000000000000111011", "00000000000000000000000001110111", "11111111111111111111111111101111", "11111111111111111111111111011111", "00000000000000000000000000111111"]], "hit_explosion": [["
|
|
1
|
+
{"battle_banner": [["01111101111101111101111101111101", "00111000111000111000111000111000", "00010000010000010000010000010000", "00000000000000000000000000000000", "01111001100011110111101100011110", "00000101110001100011001100011000", "01100101101001100011001100011000", "01111001100101100011001100011110", "01100101111101100011001100011000", "01100101100101100011001100011000", "01100101100101100011001100011000", "01111001100101100011000111011110", "00000000000000000000000000000000", "00001000001000001000001000001000", "00011100011100011100011100011100", "10111110111110111110111110111110"], ["10000010000010000010000010000010", "11000111000111000111000111000111", "11101111101111101111101111101111", "11111111111111111111111111111111", "10000110011100001000010011100001", "11111010001110011100110011100111", "10011010010110011100110011100111", "10000110011010011100110011100001", "10011010000010011100110011100111", "10011010011010011100110011100111", "10011010011010011100110011100111", "10000110011010011100111000100001", "11111111111111111111111111111111", "11110111110111110111110111110111", "11100011100011100011100011100011", "01000001000001000001000001000001"]], "battle_vs": [["11111100000000000000000000000000", "11111011111111111111111111111111", "11110111111111111111111111111111", "11101110000000000000000000000000", "11011100000000000000000000000000", "00111000111110011001100110000000", "11110001100110011011000110000000", "11100001100110011110000110000000", "00000001100110011110000110000111", "00000001100110011011000000001111", "00000001111100011001100110011100", "00000000000000000000000000111011", "00000000000000000000000001110111", "11111111111111111111111111101111", "11111111111111111111111111011111", "00000000000000000000000000111111"]], "hit_explosion": [["01111101111100000000111110111110", "00011000111001111100011100011000", "10000000010010000010001000000001", "10000000000011101110001000000001", "11000000000010000010000000000011", "10000000000011010110000000000001", "00000000000001111100000000000000", "10000000000001010100000000000001", "11000000001100000001100000000011", "11100000001110000011100000000111", "11000000000011101110000000000011", "10000000000000111000000000000001", "00000000000011101110000000000000", "10000000001110000011100000000001", "10001001001100010001100100010001", "00011011100000111000001110011000"], ["00000010000011111111000001000001", "11100111000110000011100011100111", "01111111101101111101110111111110", "01111111111100010001111111111110", "00111111111101111101111111111100", "01111111111100101001111111111110", "11111111111110000011111111111111", "01111111111110101011111111111110", "00111111110011111110011111111100", "00011111110001111100011111111000", "00111111111100010001111111111100", "01111111111111000111111111111110", "11111111111100010001111111111111", "01111111110001111100011111111110", "01110110110011101110011011101110", "11100100011111000111110001100111"]]}
|
|
Binary file
|
|
@@ -524,27 +524,30 @@ class TrainingPanel:
|
|
|
524
524
|
# right edge (Devimon spanned x26..41 on the 40px LCD) and the
|
|
525
525
|
# HIT!! label sat at y0 flush on the top border
|
|
526
526
|
punching = self._strike_t > 0
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
527
|
+
hit = E.get("train_hit", [None])[0]
|
|
528
|
+
if punching and hit:
|
|
529
|
+
# the Hit!! banner is a FULL-WINDOW 32x16 banner, staged
|
|
530
|
+
# exactly like the battle start banner (Joel 2026-07-12):
|
|
531
|
+
# the scene YIELDS -- bag and pet step offstage for the
|
|
532
|
+
# strike beat and the banner owns the window. The native
|
|
533
|
+
# 13x5 hitLabel decode at a 2x integer upscale (mechanical,
|
|
534
|
+
# dot-crisp) centred in the band.
|
|
535
|
+
big = ["".join(c * 2 for c in row) for row in hit
|
|
536
|
+
for _ in range(2)]
|
|
537
|
+
bw, bh = max(len(r) for r in big), len(big)
|
|
538
|
+
overlay = _blit(big, GRID_X0 + (GRID_W - bw) // 2,
|
|
539
|
+
BAND_TOP + (BASE_Y - BAND_TOP - bh) // 2)
|
|
540
|
+
else:
|
|
541
|
+
bag = _fit_cell(E.get("punching_bag", [None])[0] or [])
|
|
542
|
+
if bag:
|
|
543
|
+
placements.append((bag, GRID_X0 + 1, False))
|
|
544
|
+
# the pet throws the punches from the window's right edge (LAW
|
|
545
|
+
# 2026-07-11: every canon sprite lives inside the 32x16)
|
|
546
|
+
pose = self._pose_now(1 if (self.frame_i // 2) % 2 else 0) # idle bob between taps
|
|
547
|
+
pf = _crop(self._frame(rec, pose))
|
|
548
|
+
pw_ = max(len(r) for r in pf)
|
|
549
|
+
px = GRID_X0 + GRID_W - pw_
|
|
550
|
+
overlay.extend(_blit(pf, px, BASE_Y - len(pf))) # grounded; faces left natively
|
|
548
551
|
elif gk == "virus": # DVPet drawVirusPre: pet AND bag HIDDEN
|
|
549
552
|
# The real DVPet trainBar sprite is a 32-wide TRACK box (cols 0..31) + a separate
|
|
550
553
|
# goal compartment (cols 32..37) == 38 wide. Crop to the 32-wide track box so it
|
|
@@ -782,7 +785,8 @@ class TrainingPanel:
|
|
|
782
785
|
overlay, placements, note = [], [], ""
|
|
783
786
|
if m == "hit": # fullscreen impact strobe, nothing else
|
|
784
787
|
ex = _EXPLODE[fr["f"]]
|
|
785
|
-
ox
|
|
788
|
+
ox = GRID_X0 + max(0, (GRID_W - len(ex[0])) // 2) # the 32x16 flash fills
|
|
789
|
+
oy = BAND_TOP + max(0, (BASE_Y - BAND_TOP - len(ex)) // 2) # the window exactly
|
|
786
790
|
overlay = _blit(ex, ox, oy)
|
|
787
791
|
note = "HIT!"
|
|
788
792
|
elif m in ("windup", "fire_out", "miss"): # the PET is on screen (right, faces left)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tuipet
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.415
|
|
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
|
|
@@ -214,10 +214,11 @@ def test_data_block_flashes_success_pose():
|
|
|
214
214
|
assert pan.text().markup != win, "the block tell must differ from plain IDLE"
|
|
215
215
|
|
|
216
216
|
|
|
217
|
-
def
|
|
218
|
-
"""
|
|
219
|
-
|
|
220
|
-
|
|
217
|
+
def test_punch_hit_banner_takes_over_the_window(monkeypatch):
|
|
218
|
+
"""Joel 2026-07-12: the Hit!! banner is a FULL-WINDOW 32x16 banner,
|
|
219
|
+
staged like the battle start banner -- on the strike beat the scene
|
|
220
|
+
YIELDS (no bag, no pet) and the 2x-upscaled banner owns the window;
|
|
221
|
+
between taps the bag/pet scene is back and the banner is gone."""
|
|
221
222
|
from tuipet import training, grid
|
|
222
223
|
from tuipet.training import TrainingPanel, GAMES
|
|
223
224
|
from tuipet.pet import Pet
|
|
@@ -225,6 +226,7 @@ def test_punch_hit_banner_pops_inside_the_window(monkeypatch):
|
|
|
225
226
|
real = training.render_scene
|
|
226
227
|
|
|
227
228
|
def spy(placements, *a, **kw):
|
|
229
|
+
seen["placements"] = list(placements)
|
|
228
230
|
seen["overlay"] = list(kw.get("overlay") or [])
|
|
229
231
|
return real(placements, *a, **kw)
|
|
230
232
|
|
|
@@ -236,12 +238,71 @@ def test_punch_hit_banner_pops_inside_the_window(monkeypatch):
|
|
|
236
238
|
pan._start_game()
|
|
237
239
|
pan._strike_t = 0
|
|
238
240
|
pan.text()
|
|
239
|
-
|
|
240
|
-
|
|
241
|
+
assert seen["placements"], "between taps: the bag is on stage"
|
|
242
|
+
idle_ov = set(seen["overlay"])
|
|
241
243
|
pan._strike_t = 3
|
|
242
244
|
pan._strike_pose = 6
|
|
243
245
|
pan.text()
|
|
244
|
-
|
|
245
|
-
|
|
246
|
+
assert not seen["placements"], "strike beat: the scene yields"
|
|
247
|
+
ov = seen["overlay"]
|
|
248
|
+
assert ov and set(ov) != idle_ov
|
|
246
249
|
assert all(grid.X0 <= x < grid.X1 and grid.TOP <= y < grid.FLOOR
|
|
247
|
-
for x, y in
|
|
250
|
+
for x, y in ov)
|
|
251
|
+
w = max(x for x, _ in ov) - min(x for x, _ in ov) + 1
|
|
252
|
+
h = max(y for _, y in ov) - min(y for _, y in ov) + 1
|
|
253
|
+
assert (w, h) == (26, 10), (w, h) # the 2x banner fills the band
|
|
254
|
+
def test_hit_banner_is_the_native_4x_decode():
|
|
255
|
+
"""trainHit.png is the ONE training asset authored at 4x -- the blanket
|
|
256
|
+
3x extraction mushed it to 17x6 (Joel 2026-07-12: 'out of resolution').
|
|
257
|
+
The vendored sprite is the exact 13x5 native decode; a blanket
|
|
258
|
+
re-extraction at F=3 would regress it."""
|
|
259
|
+
from tuipet import data
|
|
260
|
+
hit = data.load_effects()["train_hit"][0]
|
|
261
|
+
assert (max(len(r) for r in hit), len(hit)) == (13, 5)
|
|
262
|
+
assert sum(r.count("1") for r in hit) == 30
|
|
263
|
+
def test_hit_explosion_is_the_sourced_32x16_full_window_flash(monkeypatch):
|
|
264
|
+
"""Joel 2026-07-12: the orb-impact explosion is a 32x16 banner-class
|
|
265
|
+
flash, like the battle start banner. It was: commit 852e663 sourced
|
|
266
|
+
hit_explosion from DMU at 32x16 -- the invented-art revert (3d7a6af)
|
|
267
|
+
put back WRONG 30x18/22x12 frames for this one key, undersized AND
|
|
268
|
+
clipped (18 > the 16px band). Pin the sourced frames and that both
|
|
269
|
+
collision paths strobe them alone, filling the window exactly."""
|
|
270
|
+
from tuipet import training, grid
|
|
271
|
+
from tuipet.training import TrainingPanel, GAMES, EXPLODE_FRAMES, _EXPLODE
|
|
272
|
+
from tuipet.pet import Pet
|
|
273
|
+
assert [(max(len(r) for r in f), len(f)) for f in _EXPLODE] \
|
|
274
|
+
== [(32, 16), (32, 16)]
|
|
275
|
+
seen = {}
|
|
276
|
+
real = training.render_scene
|
|
277
|
+
|
|
278
|
+
def spy(placements, *a, **kw):
|
|
279
|
+
seen["placements"] = list(placements)
|
|
280
|
+
seen["overlay"] = list(kw.get("overlay") or [])
|
|
281
|
+
return real(placements, *a, **kw)
|
|
282
|
+
|
|
283
|
+
monkeypatch.setattr(training, "render_scene", spy)
|
|
284
|
+
p = Pet(num=100, stage="Champion", attribute="Vaccine", obedience=500)
|
|
285
|
+
p.compliance = True
|
|
286
|
+
|
|
287
|
+
def full_window():
|
|
288
|
+
xs = [x for x, _ in seen["overlay"]]
|
|
289
|
+
ys = [y for _, y in seen["overlay"]]
|
|
290
|
+
return (min(xs), max(xs), min(ys), max(ys)) \
|
|
291
|
+
== (grid.X0, grid.X1 - 1, grid.TOP, grid.FLOOR - 1)
|
|
292
|
+
|
|
293
|
+
pan = TrainingPanel(p) # data drill collision
|
|
294
|
+
pan.gi = next(i for i, g in enumerate(GAMES) if g[0] == "data")
|
|
295
|
+
pan._start_game()
|
|
296
|
+
pan.strobe_t = EXPLODE_FRAMES
|
|
297
|
+
pan.text()
|
|
298
|
+
assert full_window()
|
|
299
|
+
pan2 = TrainingPanel(p) # strike volley 'hit' beat
|
|
300
|
+
pan2.gi = next(i for i, g in enumerate(GAMES) if g[0] == "hp")
|
|
301
|
+
pan2._start_game()
|
|
302
|
+
pan2.success = True
|
|
303
|
+
pan2._build_strike()
|
|
304
|
+
pan2.phase = "strike"
|
|
305
|
+
pan2.si = next(i for i, fr in enumerate(pan2.strike_tl)
|
|
306
|
+
if fr.get("m") == "hit")
|
|
307
|
+
pan2.text()
|
|
308
|
+
assert not seen["placements"] and full_window()
|
|
Binary file
|
|
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
|