# Parkour

## Description

Creating a simple mini-game with TrParticles can be done with `parkour` script. This spawns [Circle Particle](https://treasurestore.gitbook.io/treasure-particles/effects/creating-effect/script-types/particle/circle-particle) and remembers the coordinates of spawned particles. When the player glides within those coordinates:

* particle colors can be changed,
* a sound can be played for the player,
* well, any amount of any script type can be used when the player is succeeded.

This applies when a new parkour circle spawned or when the player failed too. *(See below for events)*

Parkour has a duration value, this duration value can change dynamically. Players must succeed in the parkour in `duration` seconds. A new parkour circle spawns in `interval` ticks. This interval can be changed dynamically too.

{% hint style="info" %}
Dynamic change means, for instance, speeding up the parkour interval by random values becomes possible. If these variables aren't dynamic, you can only create a new parkour circle at regular intervals, like every 120 ticks. This helps make the parkour a little more interesting.&#x20;
{% endhint %}

## Arguments &#x20;

<table data-card-size="large" data-view="cards"><thead><tr><th>Arg</th><th>Description</th><th>Format</th><th>Example(s)</th><th>Default Value</th><th data-type="checkbox">Required</th><th>Aliases</th></tr></thead><tbody><tr><td>interval</td><td>parkour interval</td><td><code>interval=&#x3C;INTEGER></code></td><td><code>interval=120</code>, <code>interval={interval}</code></td><td>*</td><td>true</td><td>*</td></tr><tr><td>duration</td><td>parkour duration</td><td><code>duration=&#x3C;INTEGER></code></td><td><code>duration=5</code>, <code>duration={duration}</code></td><td>*</td><td>true</td><td>*</td></tr><tr><td>style</td><td>circle particle preset (see below)</td><td><code>style=&#x3C;PRESET></code></td><td><code>style=parkour-easy</code></td><td>*</td><td>true</td><td>*</td></tr><tr><td>standby</td><td>stanby color scheme <em>(see</em> <a href="particle/color-format"><em>Color Format</em></a><em>)</em></td><td><code>standby=&#x3C;COLOR></code></td><td><code>standby=#FFFFFF</code></td><td>*</td><td>false</td><td>*</td></tr><tr><td>success</td><td>success color scheme <em>(see</em> <a href="particle/color-format"><em>Color Format</em></a><em>)</em></td><td><code>success=&#x3C;COLOR></code></td><td><code>success=#09b849</code></td><td>*</td><td>false</td><td>*</td></tr><tr><td>fail</td><td>fail color scheme <em>(see</em> <a href="particle/color-format"><em>Color Format</em></a><em>)</em></td><td><code>fail=&#x3C;COLOR></code></td><td><code>fail=#b80909</code></td><td>*</td><td>false</td><td>*</td></tr><tr><td>when-succeeded</td><td>will be executed when succeeded</td><td><code>when-succeeded=&#x3C;PRESET></code></td><td><code>when-succeeded=parkour-success</code></td><td>*</td><td>false</td><td>*</td></tr><tr><td>when-fail</td><td>will be executed when failed</td><td><code>when-failed=&#x3C;PRESET></code></td><td><code>when-failed=parkour-fail</code></td><td>*</td><td>false</td><td>*</td></tr><tr><td>when-spawned</td><td>will be executed when a new parkour circle spawned</td><td><code>when-spawned=&#x3C;PRESET></code></td><td><code>when-spawned=parkour-spawned</code></td><td>*</td><td>false</td><td>*</td></tr><tr><td>when-started</td><td>will be executed when a new parkour started </td><td><code>when-started=&#x3C;PRESET></code></td><td><code>when-started=parkour-started</code></td><td>*</td><td>false</td><td>*</td></tr><tr><td>configure</td><td>will be executed before a new parkour circle spawned</td><td><code>configure=&#x3C;PRESET></code></td><td><code>configure=parkour</code></td><td>*</td><td>false</td><td>*</td></tr></tbody></table>

## Note

The difference between `when-spawned` and `when-started` is, `when-started` will only be invoked when new parkour game started. But, `when-spawned` will always be invoked when the particles spawned.

## Example

{% tabs %}
{% tab title="effects.yml" %}

```yaml
  parkour-easy:
    display-name: "Easy Parkour"
    interval: 1
    on-tick:
      handler:
        scripts:
          - "parkour [style=parkour-circle-easy,standby=#FFFFFF,success=#09b849,fail=#b80909,interval=60,duration=5,when-succeeded=parkour-success,when-failed=parkour-fail]"
```

{% endtab %}

{% tab title="presets.yml" %}

```yaml
parkour-circle-easy: "circle [effect=minecraft:dust,tick=true,amount=10,origin=head*17.5,pos={x={RANDOM};y={RANDOM};z={RANDOM}},radius=1.75,particles=48,color=#FFFFFF]"
parkour-success: "play-sound [name=entity.arrow.hit_player,client=true]"
parkour-fail: "play-sound [name=minecraft:entity.villager.no,client=true]"
```

{% endtab %}
{% endtabs %}

##
