Skip to content

Make an attack Art

Designer · 40 min · No code

Result: an Ether cone attack called Frost Fan. It hits every enemy in front of you, reads Ether instead of Strength, deals double damage from the side, Slows anyone it hits from behind, and grows stronger and faster to recharge as the player trains it.

Before you start

  • Your first art. This recipe assumes you have made Stone Cleave, and goes further: area, attribute, positional bonuses, conditional effects and levels.
  • In the glossary: Art, Break, Status effect.

Steps

1. Start from a blank Art

  1. In MyGame/Arts, right-click › Data › Data Asset, pick XenoCoreArtDefinition and name it DA_FrostFan. Do not duplicate DA_XenoCore_AirSlash: the copy would bring Air Slash's Break and side-Slow effects with it.
  2. Open it. Under Art, set Display Name Frost Fan and Description Ether damage in a cone. Slows from behind.
  3. Give it its own Cooldown Tag, Cooldown.MyGame.Art.FrostFan: add the tag in Project Settings › Project › Gameplay Tags (in a tag source of your own), then pick it here. Until you do, saving reports an error, and Arts sharing a tag share one cooldown.
  4. Set Target Type to Enemy. Under Art › Animation, set Montage to an existing Art montage such as Characters/Player/Animations/Kwang/AM_XenoCore_BackSlash. Under Art › Palette, set Palette Glyph to the one Battle/Arts/DA_XenoCore_AirSlash uses.
  5. Leave Ability Class empty. The Art then runs as the shared GA_XenoCore_Art_Base.

DA_XenoCore_SlitEdge (from the side, lowers Physical Defence) and DA_XenoCore_StreamEdge (a cone) in Battle/Arts were built this way and are worth comparing against.

2. Make it an Ether art

All under Art:

  1. Attribute: Ether. Damage now uses the attacker's Ether against the target's Ether Defence, instead of Strength against Physical Defence.
  2. Category: Ether. This is the colour category the Arts menu shows; it changes no numbers.
  3. Effect Type: Damage.
  4. Under Art › Palette, set Glyph Colour to a blue, to match.

3. Make it hit an area

Under Art › Area:

  1. Area: Cone in front of the user.
  2. Area Radius: 600 (cm).
  3. Cone Angle: 100 (degrees, full width).

An area Art aimed at a cone or at a circle around the user needs no target in reach, so Distance is ignored for it. For Single target or Circle around the target, Distance is the reach, and confirming the Art from further away makes the character run in and strike on arrival.

To see the shape in play, run XenoCore.Arts.DrawArea 1 in the console: every Art draws its area, and who it hit, at impact. Tune the radius and angle by eye. (Not in Shipping builds.)

4. Reward position

  1. Under Art › Positional, add one entry to Positional Bonuses:
    • Position: Beside the target
    • Power Multiplier: 2.0
    • Announce Chance: ticked. The palette lights "Chance!" while you stand there.
  2. You can add a second entry for another position. The best multiplier that applies is used.

The front, side and back are judged from the target's facing: within 60° of its front is front, beyond 120° is behind, between is the side.

5. Add a conditional status

Under Art › Effects, add one entry:

Field Value Meaning
Effect Battle/Status/GE_XenoCore_Status_Slow What to apply
Chance 0.5 50% per target hit
Duration 8 Seconds. Required for statuses
Magnitude 0 Slow's strength is fixed in its own asset
Condition From behind Only when the user is behind that target
Recipient Each target
Announce Chance ticked Lights the palette's Chance while behind

Conditions are checked against each target as it was before this hit, so an Art that Breaks cannot also count its own Break for a "Target is Broken" entry. The full list of conditions, and reactions, is in Chain Arts into Break, Topple and Daze. Making your own status is Make a status effect.

6. Make it grow with training

Arts level from I to XII with Art Points. Power, Cooldown Duration, and each effect's Duration and Magnitude are scalable floats: a Value times a curve row keyed by the Art's level.

  1. Create a curve table CT_MyGame_ArtLevels (right-click › Data › Curve Table, pick Linear) with two rows:
    • FrostFan.Power: keys 1 = 1.0, 12 = 2.0
    • FrostFan.Cooldown: keys 1 = 1.0, 12 = 0.6
  2. Under Art, expand Power and set Value 150, Curve Table CT_MyGame_ArtLevels, Row Name FrostFan.Power. At level I it is 150; at XII, 300.
  3. On Cooldown Duration: Value 14, row FrostFan.Cooldown. 14 seconds untrained, 8.4 fully trained.
  4. Under Art › Level, Base Level Up Cost is the AP to reach level II; later levels multiply it (see Tune levelling).

With no curve, a scalable float is just its Value at every level.

The shipped Arts do not scale with level yet

The sample Arts' Power and Cooldown Duration have no curve, so training them on the Level Up tab does not change their numbers. Give them curves as above if you use them.

7. Animation

Keep the borrowed Montage to start. To use your own:

  1. The montage's slot must be in the DefaultGroup slot group: FullBody is the one the shipped Arts use.
  2. Set Impact Fraction: where in the montage the hit lands, as a fraction of its length (0.45 = a little before halfway). An Art applies itself on this timer, not from a notify.
  3. Montage Play Rate speeds the whole Art up, impact included.

Fails silently: a montage on another slot group

A montage whose slot is outside DefaultGroup blends wrong against the character's animation layers, and nothing reports it.

8. Optional: how companions use it

Under Art › Companion AI, Usable By AI and AI Priority decide whether and how much an AI-controlled member picks this Art; AI Conditions limit it to targets that meet them, for example Target lacks tag with a status tag so it is not used twice on the same enemy. See Tune companion AI.

9. Teach it

Add a row for DA_FrostFan to a character's learnset (the Data Table in their pawn's Class Defaults › XenoCore › Arts › Art Learn Table) as in Your first art, or see Set palette slots and unlocks.

Test it

  1. Press Play in Maps/L_XenoCore_Gym, slot Frost Fan on a member's palette from the Arts menu, and lead with them.
  2. Engage a group of minions and stand to one side of the one you are locked on. "Chance!" lights.
  3. Use Frost Fan. Every minion in the cone takes damage; the side one takes more.
  4. Walk behind one and use it again: about half the time it is Slowed, and its auto-attacks come round visibly slower.
  5. Open the console (`), type XenoGiveAP 5000, level Frost Fan up on the Arts menu's Level Up tab, and check that it hits harder and recharges faster.

If it doesn't work

Validation error on save: 'takes its duration from the art, and Duration is 0'

Every shipped status takes its duration from the Art. With Duration 0 it would last no time at all. Set a duration.

Validation error on save: 'Cooldown Tag ... is also used by ...'

Another Art definition uses the same Cooldown Tag, usually one you picked from an existing Art. Give this Art its own tag.

Save warning: 'No Montage'

The definition has no Montage. The Art still works, but plays no animation: its effect lands the moment it is used. A blank Art starts with none; set one as in step 1.

It hits only the locked target

Area is still Single target.

Fails silently: damage is 0

Power's Value is 0, or its Row Name is misspelled and the curve reads 0.

It does physical damage

Attribute is still Physical. Category only changes the colour.

Going further