Evaluates & categorises Spider-Man's combos in Marvel Rivals.
Project description
Karen
"Congratulations on completing the rigorous Training Wheels Protocol and gaining access to your suit’s full capabilities... Would you like me to engage Enhanced Combat Mode?" - Karen
karen is named after Spider-Man's virtual assistant in Spider-Man: Homecoming, who advised Peter in strategy and combat. This python script is designed to quickly, easily, and accurately analyse Spider-Man's combos in Marvel Rivals.
Table of Contents
Installation
Install the karen python package using pip:
pip install karen
The functions in this library can be used to create your own interface - but most likely you will prefer to download and run one of the scripts in the tests folder, where command line & discord bot interfaces have already been implemented.
Usage
karen evaluates combos given to it by the !eval command:
!eval tGusto
The above evaluates the combo tracer > get over here targeting > uppercut > swing > tracer > overhead slam. Each action in a combo is assigned a single letter for maximum efficiency, but a combo can also be given in long-form by breaking up actions with instances of ">" - so the following is another valid way of writing the same command:
!eval tracer > goht > upper > swing > tracer > oh
Note that shortened names are still used; in this format, single letter, shorthand names, or full names can be used to refer to each action. The full list is given below:
| Action | Letter | Other Names |
|---|---|---|
| Jump | j | jump |
| Double Jump | d | double jump dj |
| Land | l | land |
| Punch | p | punch punch A punch B melee punch melee punch A melee punch B |
| Kick | k | kick melee kick |
| Overhead Slam | o | overhead slam overhead over oh melee overhead slam |
| Tracer | t | tracer web tracer cluster web cluster |
| Swing | s z |
swing web swing high swing low swing web zip zip |
| Auto Swing | a | automatic swing auto swing auto simple swing easy swing |
| Whiff | w | whiff web whiff swing whiff |
| Get Over Here | g | get over here goh web pull pull |
| Get Over Here Targeting | G | get over here targeting goht |
| Uppercut | u | uppercut upper amazing combo |
| Burn Tracer | b | burn tracer burn cluster burn fire tracer fire cluster fire flame tracer flame cluster flame |
[!TIP] Spaces and anything between parentheses is ignored by the bot. The single letter names of actions are case sensitive, while all of the longer-form versions of names ignore case, so "MeleePU N(N)CH b" will be interpreted as a punch.
[!WARNING] Certain names such as "dj" and "meleePunchB" imply that the actions occur in contexts that aren't strictly enforced by the evaluation function - since 'dj' is parsed as a jump, the calculator will interpret it as a single jump if it believes you're on the ground.
Initial State
Some combos involve a setup that you don't want to list as a part of the combo - karen will automatically infer certain properties about the initial state.
If you use Get Over Here Targeting before tagging the target with a tracer/burn tracer, karen will infer that the target initially had a tracer applied (this will send a warning in the console).
If you use a kick before using two punches, karen will infer punches had been used immediately before beginning the combo.
If you use an overhead before getting airborne with a jump, burn tracer, or upercut, karen will assume you started the combo in an airborne state. If you use an overhead before acquiring one with a jump, swing, whiff, or burn tracer, karen will infer you started with a swing overhead. If you use two overheads before acquiring one, karen will assume you started with both overheads and no double jump.
Move Stacks
A movestack is indicated by a "+" - for example, a FFAme stack would be written as follows:
!eval (t)G+u
In long-form commands, the ">" separator can be entirely replaced by a "+", or they can be used in conjunction. If the command contains no instaces of the ">" character, it will not be recognised as a command, so the following are valid:
!eval tracer goht >+ upper
!eval tracer > goht + upper
But the following will not work, as the command will not be recognised as being long-form, since no ">" characters are present:
!eval goht + upper
All movestacks are listed below:
| Name | Short notation(/s) | Other Names |
|---|---|---|
| FFAme Stack | G+u f |
ffame stack ffame |
| Saporen Tech (Overhead) | o+G | saporen sap overhead saporen oh sap |
| Saporen Tech (Punch) | p+G | punch saporen punch sap |
| Saporen Tech (Kick) | k+G | kick saporen kick sap |
| Saporen FFAme Stack (Overhead) | o+G+u F |
saporen ffame stack sap ffame stack sap ffame overhead saporen ffame stack oh sap ffame stack oh sap ffame |
| Saporen FFAme Stack (Punch) | p+G+u | punch saporen ffame stack punch sap ffame stack punch sap ffame |
| Saporen FFAme Stack (Kick) | k+G+u | kick saporen ffame stack kick sap ffame stack kick sap ffame |
| Space Jam | u+w+G J |
space jam sj |
| Reverse Trigger (Punch) | p+t r |
reverse trigger rt punch reverse trigger punch rt black flash punch backflash |
| Reverse Trigger (Kick) | k+t | kick reverse trigger kick rt kick black flash jash flash |
| Reverse Trigger (Overhead) | o+t | overhead reverse trigger oh reverse trigger overhead rt oh rt overhead black flash oh black flash |
| Punch Overhead Stack | p+o | punch overhead stack punch oh stack unique 3 hit punch stack unique 3 hit punch u3h punch |
| Kick Overhead Stack | k+o | kick overhead stack kick oh stack unique 3 hit kick stack unique 3 hit kick u3h kick |
Roadmap
- Add parsing of commands in all formats
- Measure & record all action timings
- Add evaluation function
- Add error detection & warnings
- Add discord bot functionality
- Add combo generator
- Optimise combo generator by removing unneeded actions
More detailed/frequent progress updates are given on the testing discord server.
Acknowledgement
Special thanks to NonJohns for feedback on the design/featureset and for help with quality assurance.
Additional thanks to Venom, Fancy_Spider, and Mrpoolman, Katapult, and all other testers who helped find bugs.
License
karen is distributed under the terms of the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file karen-1.0.3.tar.gz.
File metadata
- Download URL: karen-1.0.3.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fc21ed632ddeefd0de1d4da14013c04701f29dbdae106fe93fafc11e65d6cb4
|
|
| MD5 |
bd63c50741f575b4315cac040c32abdf
|
|
| BLAKE2b-256 |
f60eba00845b52164e8ffea971dde1384196506f188d6233d08f54cd4aa66444
|
File details
Details for the file karen-1.0.3-py3-none-any.whl.
File metadata
- Download URL: karen-1.0.3-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e71bf49e56291efe5e68a2a6570a3de4becaf79f072e2aa563885448eb63162d
|
|
| MD5 |
348787e93f9a17049cbb69580da17eea
|
|
| BLAKE2b-256 |
eb9e1cf1d513a37c7914b90957f3807309fccd5d192b64f6c3f491c8499bc36e
|