server/frontend/ui/src/routes/rules.svelte

148 lines
5.0 KiB
Svelte

<script>
import {
Card,
CardBody,
Container,
Icon,
} from 'sveltestrap';
import { challengeInfo } from '../stores/challengeinfo.js';
import { settings } from '../stores/settings.js';
</script>
<Container class="my-3">
<h1 class="text-dark">
{$challengeInfo.title}
<small class="text-muted">Règles générales</small>
</h1>
<div class="card-group text-justify mb-5">
<div class="card niceborder">
<div class="card-body text-indent">
<h2>Débloquage des challenges</h2>
<p>
Au début, seul le premier défi de chaque scénario est
accessible. Les défis de niveau supérieur sont débloqués en
validant celui du niveau qui le précéde.
</p>
<hr>
<h2>Le classement</h2>
<p>
Pour figurer dans le classement, il faut avoir réalisé au moins une
action&nbsp;: qu'elle ajoute ou retire des points.
</p>
<p>
En cas d'égalité au score, les équipes sont départagées selon leur
ordre d'arrivée à ce score.
</p>
<hr>
<h2>Calcul des points</h2>
<p>
Pour gagner des points, vous devez résoudre les défis qui vous sont
proposés. Plus le challenge est compliqué, plus il rapporte de points.
</p>
<h3>Coût des tentatives</h3>
<p>
Vous disposez de 10&nbsp;tentatives pour trouver la/les solutions d'un
challenge. Au delà, chaque tentative vous fait perdre une petite quantité
de points comme suit&nbsp;:
</p>
<table class="table table-sm table-striped">
<thead>
<tr>
<th>Nombre de tentatives</th>
<th>Coût par tentative</th>
</tr>
</thead>
<tbody>
<tr>
<td>0 à 10</td>
<td>0&nbsp;point</td>
</tr>
<tr>
<td>11 à 20</td>
<td>{Math.round($settings.submissionCostBase * 10) / 10}&nbsp;{$settings.submissionCostBase < 2?"point":"points"}</td>
</tr>
<tr>
<td>21 à 30</td>
<td>{Math.round($settings.submissionCostBase * 20) / 10}&nbsp;{$settings.submissionCostBase * 2 < 2?"point":"points"}</td>
</tr>
<tr>
<td>31 à 40</td>
<td>{Math.round($settings.submissionCostBase * 30) / 10}&nbsp;{$settings.submissionCostBase * 3 < 2?"point":"points"}</td>
</tr>
<tr>
<td>41 à 50</td>
<td>{Math.round($settings.submissionCostBase * 40) / 10}&nbsp;{$settings.submissionCostBase * 4 < 2?"point":"points"}</td>
</tr>
<tr>
<td>...</td>
<td>...</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="card niceborder">
<div class="card-body text-indent">
<p>
Par exemple&nbsp;:
</p>
<ul>
<li>À&nbsp;10 tentatives, vous aurez perdu {$settings.submissionCostBase * 0}&nbsp;{$settings.submissionCostBase * 0 < 2?"point":"points"}.</li>
<li>À&nbsp;15 tentatives, vous aurez perdu en tout {$settings.submissionCostBase * 5}&nbsp;{$settings.submissionCostBase * 5 < 2?"point":"points"}&nbsp;: <samp> {$settings.submissionCostBase} &times; 5</samp>.</li>
<li>25 tentatives vous coûteront en tout {$settings.submissionCostBase * 20}&nbsp;{$settings.submissionCostBase * 20 < 2?"point":"points"}&nbsp;: <samp>{$settings.submissionCostBase} &times; 10 + {$settings.submissionCostBase} &times; 2 &times; 5</samp>.</li>
<li>50 tentatives vous coûteront en tout {$settings.submissionCostBase * 100}&nbsp;{$settings.submissionCostBase * 100 < 2?"point":"points"}&nbsp;: <samp>{$settings.submissionCostBase} &times; 10 + {$settings.submissionCostBase} &times; 2 &times; 10 + {$settings.submissionCostBase} &times; 3 &times; 10 + {$settings.submissionCostBase} &times; 4 &times; 10</samp>.</li>
</ul>
<p>
La dernière tentative (lorsque tous les flags sont bons) est comptabilisée
parmi ce nombre de tentatives.
</p>
<hr>
<h3>Coût des indices</h3>
<p>
Pour vous aider, certains défis vous proposent un ou
plusieurs <strong>indices</strong>. Ces indices vous font perdre des
points, la valeur de points perdus est indiquée pour chaque indice.
</p>
<p>
Ces points sont perdus, que vous réussissiez ou non le défi.
</p>
<p>
Vous pouvez débloquer des indices même si vous ne disposez pas de
suffisamment de points (ou même si vous n'en avez pas encore) ; dans ce
cas, votre score sera négatif.
</p>
<hr>
<h3>Bonus</h3>
<p>
Plusieurs bonus peuvent s'appliquer en même temps, dans ce cas, le calcul
du bonus est toujours effectué à partir du nombre de points initiaux du
défi.
</p>
<h4>Prem's</h4>
<p>
Un bonus de +{$settings.firstBlood * 100}&nbsp;% est attribué à la première équipe qui résout un défi.
</p>
<h4>Bonus temporaires <small><Icon name="gift" aria-hidden="true" title="Des
bonus existent pour au moins un challenge de ce thème" /></small></h4>
<p>
Au cours du challenge, afin de booster les équipes ou certains challenges,
un bonus peut-être attribué si une tentative valide est envoyée durant la
période d'activité du bonus. Restez à l'écoute et observez les challenges
portant cette icône&nbsp;: <Icon name="gift"
aria-hidden="true" title="Des bonus existent pour au moins un challenge de ce
thème" />
</p>
</div>
</div>
</div>
</Container>