Playstyles - Slackaduts/Deimos-Wizard101 GitHub Wiki

How to make Playstyles

Basic Info

Playstyles are essentially defining your own combat AI. Keep in mind that for now, combat is blind to combat conditions. For instance, if the enemy shields or weaknesses combat has no clue this happened.

Syntax

{round specifier} spell[enchant] @ target

Round Specifier (Optional)

{#}: forces a spell to be cast on a specific round. Example: {3} Tempest[epic] would force tempest to be enchanted and cast on round 3.

Note that this is optional.

Spell

Casting by name

Sound of Musicology[Epic]: You can cast based on the full name of the spell. For instance, this would work to cast enchanted Sound of Musicology.

Glimpse: Providing a subsection of the spell's name will still work. For instance, this would work to cast Glimpse of Infinity.

Example: glimpse[epic] @ enemy would cast an epic enchanted Glimpse of Infinity on the enemy.

Casting by type

Spell casting by the types of elements in the spell is also supported.

This is a list of spell names/keywords that determines which spell (not including enchants) is selected.

Keep in mind that if this effect shows up anywhere in the spell, it will be considered.

Requirements can be chained with the "&" sign.

Keep in mind also that AOE effects will be rejected unless an AOE is specified in the requirements.

damage: If the spell causes damage to the enemy (NOT self)

heal: If the spell heals at all

heal self: If the spell heals yourself

heal other: If the spell heals an ally except yourself

blade: If the spell is a positive charm

trap: If the spell is a negative ward

ward: If the spell is a positive ward (Example: Shields)

charm: If the spell is a negative charm (Example: Infections)

inc_damage: If the spell affects outgoing damage (either negative outgoing for you or positive incoming for enemy)

out_damage: If the spell affects incoming damage (either positive outgoing for you or negative outgoing for enemy)

inc_heal: If the spell affects incoming healing (either positive incoming for you or negative incoming for enemy)

out_heal: If the spell affects outgoing healing (either positive incoming for you or negative outgoing for enemy)

aura: If the spell has an aura in it (can be healing, damage related, etc. For oddball or very specific auras like Empowerment simply call the aura by name)

global: If the spell applies a global (Example: Crimson Phantom, Circle of Thorns)

polymorph: If the spell applies a polymorph

shadow: If the spell applies a shadow form. (Example: Shadow Shrike)

shadow_creature: If the spell is a shadow creature hit. (Example: Dark Nova)

pierce: If the spell modifies pierce (either positive for you or negative for enemy)

prism: If the spell applies a prism, either blade prism or trap prism (Example: Old One's Endgame, Death Prism)

dispel: If the spell applies a dispel.

Examples:

  • any<damage & heal>[epic] @ enemy (Casts only spells that hit and heal, like Dark & Stormy or Dog Tracy)
  • any<damage & aura & out_damage> (Casts only spells that hit and apply a damage buff aura, like Stormwing)
  • any<heal & aoe>[radical] (Casts only AOE heal spells)
  • any<blade & out_damage> @ self (Casts only damage blades)

Enchanting

Enchanting only works by name. Here's a couple examples on how it is done:

  • any<damage>[epic] @ enemy
  • any<heal & aoe>[radical]
  • Feint[Potent Trap] @ enemy

Targeting

Below is a list of keywords you can use to declare a target.

Keep in mind it is on you to tell the bot how to target the spell.

If you have a Feint and you do not specify a target, it will fail to cast as the enemy will never be selected.

  • self: Selects yourself.
  • enemy(#): Selects an enemy, numbered in order from 0 to 3.
  • ally(#): Selects an ally, numbered in order from 0 to 2 as this excludes yourself.
  • boss: Selects a boss.
  • Named targeting: Gilroy BoomStone, King Detritus
  • Multi targeting (for divide spells): (target1, target2, ...) Example: (boss | enemy(0)) would select the boss and the first enemy. It is up to you to make sure these do not conflict.

Priority Casting

Simply separate spell statements with a | to define the order in which they should be considered.

If the first option is not castable or no cards for it exist, it will consider the next and so on.

This can be used to make very powerful bots that work regardless of round.

Example: any<aura & out_damage> | any<aoe & damage>[epic] This would always damage aura into an enchanted AOE hit, regardless of turn.

Multi client configs

To specify that a config is for a specific client, simply have a line before it be:

###pX where X is the number of the client.

Example:

### p1
Elemental Blade @ ally(1)
### p2
Tempest[Epic]

If you do not specify a client, the default config will be used.

Default config

The default will prioritize every buff over hitting, so it's good if you pack minimal buffs into your desired hit.

any<trap & inc_damage>[potent] @ enemy | any<trap & inc_damage & aoe>[potent] | any<blade & out_damage>[sharp] @ self | any<blade & out_damage & aoe>[sharp] | any<global> | any<aura & out_damage> | any<shadow> | any<damage & aoe>[epic] | any<damage>[epic] @ enemy
⚠️ **GitHub.com Fallback** ⚠️