Releases: koisland/SuperAutoTest
v0.5.0
This release covers v0.4.7
to v0.5.0
. To download source code for specific versions, please refer to releases on crates.io
.
Done-ish finally. Released to fix outdated data source from SAP wiki's transition from fandom
to wiki.gg
.
Features
- Added
Toy
struct and records toSapDB
. - Added persistent effects and counters for the
Team
struct. - Added persistent golden retriever effect.
- Added tier 1 golden pack pets.
Changes
- Updates effects from Puppy Pack rework.
- Removed entity field from
Effect
struct. - Migrated links from outdated/unmaintained fandom wiki to wiki.gg.
Bug-Fixes
- Broken benchmarks.
- Essentially, only one test was run and the state of the team (all fainted) was un-updated.
- Will be working on redoing this in the coming releases.
v0.4.6
This release includes changes in v0.4.3 - v0.4.6.
Features
- Added SAPRecord to hold both types of SAP records.
- Added SAPQuery to generate queries.
Changes
- Removed incorrect terminology in docs for directed graphs.
- Removed
log4rs
andreqwest
as dependencies. - Replaced
reqwest
withureq
's blocking api. - Changed pets and teams to be thread-safe by refactoring
Rc<Refcell<T>>
intoArc<Rwlock<T>>
.- Only results in a 5% increase in runtime according to benchmarks.
- This allows users to build teams in parallel across multiple threads. See
docs/examples
.
Bug-Fixes
- Fixed dolphin only activating once regardless of level.
- Fixed bat only activating once regardless of level.
- Fixed incorrect summon effect for whale (clone vs default pet) and potential panic if a pet was not in front of it.
v0.4.2
This release adds battle_to_df()
, a function that converts battle history to a tabular TSV
format, and some quality-of-life functions. Read more in the docs. This also tidies up the library and addresses some bugs.
Features
- Added
battle_to_df()
to convert battle history to a data frame. - Added
is_non_specific()
method forPosition
to check if it is non-specific to the current position. - Added
check_activate()
forEffect
to check if anOutcome
trigger activates it.
Changes
- Renamed
TeamViewer
trait'scheck_eq_cond()
tofilter_matching_pets()
- Included
Statistics
of afflicting and affected pets to graphs inTeam
verbose dags. - Changed
Team
names to only include alphanumeric characters.- This ensures that any data frames produced are always formatted correctly.
- Changed effect-applying methods to always use the seed of the team invoking the method.
- Certain
Position
s would use the team of the pet being affected.
- Certain
Bug-Fixes
- Fixed
Mosquito
effect not scaling with level. - Fixes
Chili
effect not triggering pets withKnockout
abilities likeRhino
orHippo
. - Fixed bug where cycles in
TeamEffects::trigger_all_effect()
were reset.
v0.4.0
This update fixes bugs with battle effect order and adds battle visualization. These changes can be seen in PR #2.
Features
- Added better battle visualization with DAGs.
- Includes feature in
.saptest.toml
to disable graphs for performance.
- Includes feature in
- Added team names to
SapDB
from the Team Names SAP wiki page. - Added random generation of team names for
Team
. - Added
team
field toPet
. - Added
sold
field toTeam
to store sold pets. - Added condition in
Team::fight()
that preventsTeam
s with identical names from fighting.- This is necessary for building the digraph.
Changes/Fixes
- Changed
Team::clear_team()
to retain empty slots in middle of friends and push up the first pet if empty slots ahead of it. - Changed certain
Action
like theExperience
andProfit
variants to take args soMultiple
not required. - Changed
Clone
impl forTeam
adds "_copy" suffix so each team always has a unique name. - Changed
TeamEffects::trigger_effects()
to be only for pet effects. Split item effects intoTeamEffects::trigger_items()
. - Fixed
Team::restore()
to not invalidate previousPet
references. - Fixed bug where new
Tiger
abilities fromrepeat_effects_if_tiger()
were not mapped to the effect pet causing the effects to be invalid. - Fixed bug in battle effect order where which side invoked
Team::fight()
would alter the battle outcome.lhs.fight(rhs) != rhs.fight(lhs)
- Fixed by correctly changing triggers to deplete by the team with the lowest attack pet at the front. Also fixed so item effects activate last.
- Fixed bug with
Chili
not activating Knockout effects withRhino
/Hippo
. - Removed some hard-coded actions like
Action::Tapir
andAction::Vulture
withAction::Conditional
actions. - Removed
id
arg forPet::new()
as uniquePet
ids are now required. - Updated docs and benchmarks.
v0.3.0
This release implements shopping mechanics from Super Auto Pets and finishes the remaining pets and foods in the Turtle, Puppy, Star, and Weekly packs.
Features
- Added the
Shop
struct which is a modifiable shop. - Added the
TeamShopping
trait which enablesTeam
s to shop and scale as theTeam
battles. - Added
Position::Ahead
andPosition::Nearest
positions to select pets.- Replaced
Position::Relative
for certain pets (ex. Kangaroo) as the introduction of empty slots means these can miss.
- Replaced
- Reintroduced empty slots into
Team
s to better emulate battle logic. - Added configurable database startup allowing users to set specific versions of the wiki to query from.
- Added programmatic logging configuration.
- Changed
Statistics
mul
operation with percentages to act more as expected. - Changed effect triggering functions to not require another
Team
as a required argument. - Reorganized project so cleaner separation of related code.
- Fixed bug where Weekly pack items were missed.
v0.2.0
In this release, I decided to remove the binary in favor of a library. This reduces dependencies and allows for a more usable and flexible API.
Features
- A fully documented crate on
crates.io
under the namesaptest
. - Easier access to the game information with a dedicated struct,
SapDB
, to initialize theSQLite
database.- Before this, a user was required to run the compiled binary to set everything up.
- Serialize and deserialize
Pet
s andTeam
s as JSON strings. - All pets (with non-shop related abilities) from the Puppy, Tiger, and Star packs are supported!
v0.1.0
This is the first release of SuperAutoTest
, a framework built in Rust to create and test Super Auto Pets team combos. In this current version, all pets from the Turtle
pack are supported!
Features
A binary executable that:
- Spins up a server on localhost using the
Rocket
framework and can receive requests from three endpoints. - Builds a
SQLite
database (./sap.db
) in the root directory.
All source code used to compile the binary is located in the src
directory.
Endpoints
The first two endpoints comprise the database aspect of the framework that is used to get updated information about pet/
s and food/
s from the Super Auto Pets Fandom wiki.
The last endpoint, battle/
, allows the testing of team combinations. Examples can be checked in docs/examples/
.