diff --git a/public/.htaccess b/public/.htaccess
index 877a26a..83310cd 100644
--- a/public/.htaccess
+++ b/public/.htaccess
@@ -24,6 +24,45 @@
RewriteEngine On
+ # 1b. Deprecated documentation pages moved to https://docs.pokemonworkshop.com (refs #7)
+ # Each old page 301-redirects to its migrated equivalent, per locale.
+ RewriteRule ^en/help/event-making-in-rmxp/give-a-badge/?$ https://docs.pokemonworkshop.com/rpg-maker-xp/give-a-badge/ [R=301,L]
+ RewriteRule ^fr/help/event-making-in-rmxp/give-a-badge/?$ https://docs.pokemonworkshop.com/fr/rpg-maker-xp/donner-un-badge/ [R=301,L]
+ RewriteRule ^en/help/event-making-in-rmxp/give-a-pokemon/?$ https://docs.pokemonworkshop.com/rpg-maker-xp/give-a-pokemon/ [R=301,L]
+ RewriteRule ^fr/help/event-making-in-rmxp/give-a-pokemon/?$ https://docs.pokemonworkshop.com/fr/rpg-maker-xp/donner-un-pokemon/ [R=301,L]
+ RewriteRule ^en/help/event-making-in-rmxp/give-an-item/?$ https://docs.pokemonworkshop.com/rpg-maker-xp/give-an-item/ [R=301,L]
+ RewriteRule ^fr/help/event-making-in-rmxp/give-an-item/?$ https://docs.pokemonworkshop.com/fr/rpg-maker-xp/donner-un-objet/ [R=301,L]
+ RewriteRule ^en/help/event-making-in-rmxp/start-a-wild-battle/?$ https://docs.pokemonworkshop.com/rpg-maker-xp/start-a-wild-battle/ [R=301,L]
+ RewriteRule ^fr/help/event-making-in-rmxp/start-a-wild-battle/?$ https://docs.pokemonworkshop.com/fr/rpg-maker-xp/demarrer-un-combat-sauvage/ [R=301,L]
+ RewriteRule ^en/help/event-making-in-rmxp/create-a-shop/?$ https://docs.pokemonworkshop.com/rpg-maker-xp/create-shops/ [R=301,L]
+ RewriteRule ^fr/help/event-making-in-rmxp/create-a-shop/?$ https://docs.pokemonworkshop.com/fr/rpg-maker-xp/creer-des-boutiques/ [R=301,L]
+ RewriteRule ^en/help/event-making-in-rmxp/create-a-pokemon-shop/?$ https://docs.pokemonworkshop.com/rpg-maker-xp/create-shops/ [R=301,L]
+ RewriteRule ^fr/help/event-making-in-rmxp/create-a-pokemon-shop/?$ https://docs.pokemonworkshop.com/fr/rpg-maker-xp/creer-des-boutiques/ [R=301,L]
+ RewriteRule ^en/help/event-making-in-rmxp/edit-event-attributes/?$ https://docs.pokemonworkshop.com/rpg-maker-xp/event-name-attributes/ [R=301,L]
+ RewriteRule ^fr/help/event-making-in-rmxp/edit-event-attributes/?$ https://docs.pokemonworkshop.com/fr/rpg-maker-xp/attributs-dun-event-via-son-nom/ [R=301,L]
+ RewriteRule ^en/help/event-making-in-rmxp/how-to-use-the-followme-system/?$ https://docs.pokemonworkshop.com/psdk/core-systems/followme/ [R=301,L]
+ RewriteRule ^fr/help/event-making-in-rmxp/how-to-use-the-followme-system/?$ https://docs.pokemonworkshop.com/fr/psdk/core-systems/followme/ [R=301,L]
+ RewriteRule ^en/help/event-making-in-rmxp/release-a-roaming-pokemon/?$ https://docs.pokemonworkshop.com/psdk/battle-scripting/how-to-add-roaming-pokemon/ [R=301,L]
+ RewriteRule ^fr/help/event-making-in-rmxp/release-a-roaming-pokemon/?$ https://docs.pokemonworkshop.com/fr/psdk/battle-scripting/pokemon-fuyards/ [R=301,L]
+ RewriteRule ^en/help/pokemon-sdk/how-to-block-a-move/?$ https://docs.pokemonworkshop.com/psdk/battle-engine/how-to-block-a-move/ [R=301,L]
+ RewriteRule ^fr/help/pokemon-sdk/how-to-block-a-move/?$ https://docs.pokemonworkshop.com/fr/psdk/battle-engine/bloquer-une-attaque/ [R=301,L]
+ RewriteRule ^en/help/pokemon-sdk/comment-faire-un-move-qui-echoue/?$ https://docs.pokemonworkshop.com/psdk/battle-engine/how-to-make-a-move-fail/ [R=301,L]
+ RewriteRule ^fr/help/pokemon-sdk/comment-faire-un-move-qui-echoue/?$ https://docs.pokemonworkshop.com/fr/psdk/battle-engine/echouer-une-attaque/ [R=301,L]
+ RewriteRule ^en/help/pokemon-sdk/comment-empecher-la-selection-d-une-attaque/?$ https://docs.pokemonworkshop.com/psdk/battle-engine/how-to-prevent-move-selection/ [R=301,L]
+ RewriteRule ^fr/help/pokemon-sdk/comment-empecher-la-selection-d-une-attaque/?$ https://docs.pokemonworkshop.com/fr/psdk/battle-engine/empecher-la-selection-dune-attaque/ [R=301,L]
+ RewriteRule ^en/help/pokemon-sdk/custom-environments/?$ https://docs.pokemonworkshop.com/psdk/core-systems/create-a-custom-system-tag/ [R=301,L]
+ RewriteRule ^fr/help/pokemon-sdk/custom-environments/?$ https://docs.pokemonworkshop.com/fr/psdk/core-systems/creer-un-system-tag-personnalise/ [R=301,L]
+ RewriteRule ^en/help/pokemon-sdk/how-contribute-to-pokemon-sdk/?$ https://docs.pokemonworkshop.com/getting-started/using-git-with-psdk/ [R=301,L]
+ RewriteRule ^fr/help/pokemon-sdk/how-contribute-to-pokemon-sdk/?$ https://docs.pokemonworkshop.com/fr/getting-started/utiliser-git-avec-psdk/ [R=301,L]
+ RewriteRule ^en/help/pokemon-sdk/how-edit-map-rxdata-files/?$ https://docs.pokemonworkshop.com/getting-started/work-together-on-a-psdk-project/ [R=301,L]
+ RewriteRule ^fr/help/pokemon-sdk/how-edit-map-rxdata-files/?$ https://docs.pokemonworkshop.com/fr/getting-started/travailler-a-plusieurs-sur-un-projet-psdk/ [R=301,L]
+ RewriteRule ^en/help/pokemon-sdk/how-generate-csv-files-translate-game-messages/?$ https://docs.pokemonworkshop.com/rpg-maker-xp/translate-your-game-with-csv/ [R=301,L]
+ RewriteRule ^fr/help/pokemon-sdk/how-generate-csv-files-translate-game-messages/?$ https://docs.pokemonworkshop.com/fr/rpg-maker-xp/traduire-son-jeu-avec-csv/ [R=301,L]
+ RewriteRule ^en/learn/arrays-in-ruby/?$ https://docs.pokemonworkshop.com/ruby/arrays/ [R=301,L]
+ RewriteRule ^fr/learn/arrays-in-ruby/?$ https://docs.pokemonworkshop.com/fr/ruby/tableaux/ [R=301,L]
+ RewriteRule ^en/documentation/pokemon-sdk-battle-weather-effect-class-overview/?$ https://docs.pokemonworkshop.com/psdk/battle-engine/how-to-create-a-weather/ [R=301,L]
+ RewriteRule ^fr/documentation/pokemon-sdk-battle-weather-effect-class-overview/?$ https://docs.pokemonworkshop.com/fr/psdk/battle-engine/creer-une-meteo-et-ses-effets/ [R=301,L]
+
# 2. Redirect people coming from the root to their respective language
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ /fr/ [R=307,L]
@@ -35,7 +74,7 @@
RewriteRule ^([^:]+)/tag:([^:]+)$ $1_$2/index.html [L]
-
+
# Turn on the module.
ExpiresActive on
# Set the default expiry times.
@@ -46,4 +85,4 @@
ExpiresByType image/ico "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType text/html "access plus 600 seconds"
-
+
diff --git a/src/content/pages/documentation/pokemon-sdk-battle-weather-effect-class-overview_en.mdoc b/src/content/pages/documentation/pokemon-sdk-battle-weather-effect-class-overview_en.mdoc
deleted file mode 100644
index 45a364a..0000000
--- a/src/content/pages/documentation/pokemon-sdk-battle-weather-effect-class-overview_en.mdoc
+++ /dev/null
@@ -1,211 +0,0 @@
----
-title: Pokémon SDK Battle Weather effect class Overview
-seoDescription: Everything you need to know about weather effects in Pokémon SDK,
- including how to create one yourself.
-tags:
-- PSDK
-publishDate: '2025-09-08 17:19:00'
-order: 0
----
-
-The `Battle::Effects::Weather` class within the `Battle` module is designed to manage various weather effects during battles in a game. It inherits from `EffectBase` and includes several subclasses representing different types of weather conditions such as fog, hail, hard rain, hardsun, rain, sandstorm, snow, strong winds, and sunny. Each subclass implements specific behaviors associated with its corresponding weather condition.
-
-`Battle::Effects::Weather` is found in [scripts/5 Battle/06 Effects/06 Weather Effects/001 WeatherBase.rb](https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/001%20WeatherBase.rb?ref_type=heads).
-
-## Class Attributes
-
-`Weather` has an attribute reader `@db_symbol` which stores the database symbol of the weather effect.
-
-```ruby
-attr_reader :db_symbol
-@registered_weathers = {}
-```
-
-## Methods
-
-`initialize` : The constructor (`initialize`) takes a `logic` parameter (an instance of `Battle::Logic`) and a `db_symbol` parameter (a symbol representing the weather effect).
-
-```ruby
-# Create a new weather effect
-# @param logic [Battle::Logic]
-# @param db_symbol [Symbol] db_symbol of the weather
-def initialize(logic, db_symbol)
- super(logic)
- @db_symbol = db_symbol
-end
-```
-
-`register` : allows registering new weather effects by associating a `db_symbol` with a class (`klass`) that represents the weather effect.
-
-```ruby
-class << self
- # Register a new weather
- # @param db_symbol [Symbol] db_symbol of the weather
- # @param klass [Class] class of the weather effect
- def register(db_symbol, klass)
- @registered_weathers[db_symbol] = klass
- end
-```
-
-**Instantiation** : Another class method `new` creates instances of registered weather effects based on the provided `db_symbol`.
-
-```ruby
-# Create a new Weather effect
-# @param logic [Battle::Logic]
-# @param db_symbol [Symbol] db_symbol of the weather
-# @return [Weather]
-def new(logic, db_symbol)
- klass = @registered_weathers[db_symbol] || Weather
- object = klass.allocate
- object.send(:initialize, logic, db_symbol)
- return object
-end
-```
-
-## Sub-classes
-
-Each subclass of `Weather` overrides methods to implement unique behaviors:
-
-### Fog
-
-Inherits from `Weather` implements `on_end_turn_event` to decrease weather duration and change the weather to none if certain conditions are met.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Fog.rb?ref_type=heads" %}See the Fog subclass on the Pokémon SDK code repository{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Hail
-
-Inherits from `Weather`. Similar to Fog but also checks for hail damage immunity and applies damage to non-immune battlers. It defines constants for abilities and items that block hail damage.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Hail.rb?ref_type=heads" %}See the Hail subclass on the Pokémon SDK code repository{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Hardrain
-
-Inherits from `Weather`. Overrides `on_end_turn_event`_,_ `on_move_prevention_target`, `on_weather_prevention` and `mod1_multiplier` to affect moves and prevent certain weather changes.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Hardrain.rb?ref_type=heads" %}See the Hardrain subclass on the Pokémon SDK code repository{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Hardsun
-
-Inherits from `Weather`. Similar to `Hardrain` but affects fire and water-type moves differently.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Hardsun.rb?ref_type=heads" %}See the Hardsun subclass on the Pokémon SDK code repository{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Rain
-
-Inherits from `Weather`. Decreases weather duration and modifies move multipliers for fire and water-type moves.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Rain.rb?ref_type=heads" %}See the Rain subclass on the Pokémon SDK code repository{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Sandstorm
-
-Inherits from `Weather`. Checks for sandstorm damage immunity and applies damage to non-immune battlers. Also modifies special defense multipliers.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Sandstorm.rb?ref_type=heads" %}See the Sandstorm subclass on the Pokémon SDK code repository{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Snow
-
-Inherits from `Weather`. Similar to Sandstorm but specifically for snowy conditions.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Snow.rb?ref_type=heads" %}See the Snow subclass on the Pokémon SDK code repository{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### StrongWinds
-
-Inherits from `Weather`. Affects flying-type Pokémon and modifies type effectiveness under certain conditions.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20StrongWinds.rb?ref_type=heads" %}See the StrongWinds subclass on the Pokémon SDK code repository{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Sunny
-
-Inherits from `Weather`. Decreases weather duration and modifies move multipliers for fire and water-type moves.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Sunny.rb?ref_type=heads" %}See the Sunny subclass on the Pokémon SDK code repository{% /cta %}
-
-{% /column %}
-{% /row %}
-
-## Creating a Custom Battle Weather Effect
-
-Create a monkey patch that extends Battle::Effects::Weather. The custom weather condition class must inherit from `Weather` .
-
-Example: Dragon Fog (created in`00100_DragonFog.rb`)
-
-```ruby
-module Battle
- module Effects
- class Weather
- class DragonFog < Weather
- # Function called at the end of a turn
- # @param logic [Battle::Logic] logic of the battle
- # @param scene [Battle::Scene] battle scene
- # @param battlers [Array] all alive battlers
- def on_end_turn_event(logic, scene, battlers)
- if $env.decrease_weather_duration
- # Displays The Dragon Fog has lifted!
- scene.display_message_and_wait(parse_text(69, 07))
- logic.weather_change_handler.weather_change(:none, 0)
- else
- # Displays "The air is filled with thick Dragon Fog!"
- scene.display_message_and_wait(parse_text(69, 06))
- end
- end
-
- # Give the move mod1 mutiplier (before the +2 in the formula)
- # @param user [PFM::PokemonBattler] user of the move
- # @param target [PFM::PokemonBattler] target of the move
- # @param move [Battle::Move] move
- # @return [Float, Integer] multiplier
- def mod1_multiplier(user, target, move)
- return 0.5 if move.type_fairy?
- return 1.5 if move.type_dragon?
-
- return 1
- end
- end
- register(:dragon_fog, DragonFog)
- end
- end
-end
-```
-
diff --git a/src/content/pages/documentation/pokemon-sdk-battle-weather-effect-class-overview_fr.mdoc b/src/content/pages/documentation/pokemon-sdk-battle-weather-effect-class-overview_fr.mdoc
deleted file mode 100644
index a7a2c5a..0000000
--- a/src/content/pages/documentation/pokemon-sdk-battle-weather-effect-class-overview_fr.mdoc
+++ /dev/null
@@ -1,212 +0,0 @@
----
-title: Vue d'ensemble de la classe Battle Weather de Pokémon SDK
-seoDescription: Tout ce que vous devez savoir à propos des effets de météo en combat
- sur Pokémon SDK, dont le moyen d'en créer une vous-même.
-publishDate: '2025-09-08 17:19:00'
-order: 0
----
-
-La classe `Battle::Effects::Weather` du module `Battle` est conçue pour gérer les différents effets de météo pendant les combats.
-Elle hérite de `EffectBase` et contient plusieurs sous-classes qui représentent chacune un type de météo : brouillard (_fog_), grêle (_hail_), pluie battante (_hard rain_), soleil intense (_hardsun_), pluie (_rain_), tempête de sable (_sandstorm_), neige (_snow_), vents violents (_strong winds_) et soleil (_sunny_).
-
-Chaque sous-classe implémente les comportements spécifiques liés à son type de météo correspondant (par exemple dégâts de la grêle, bonus aux attaques Feu sous le soleil, etc.).
-
-`Battle::Effects::Weather` se trouve dans la page de code [scripts/5 Battle/06 Effects/06 Weather Effects/001 WeatherBase.rb](https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/001%20WeatherBase.rb?ref_type=heads).
-
-## Attributs de la classe
-
-La météo `Weather` possède un attribut reader `@db_symbol` qui stocke le symbole de base de données de l’effet météo.
-
-```ruby
-attr_reader :db_symbol
-@registered_weathers = {}
-```
-
-## Méthodes
-
-`initialize` : Le constructeur (`initialize`) prend un paramètre `logic` (une instance de `Battle::Logic`) et un paramètre `db_symbol` (un symbole représentant l’effet météo).
-
-```ruby
-# Create a new weather effect
-# @param logic [Battle::Logic]
-# @param db_symbol [Symbol] db_symbol of the weather
-def initialize(logic, db_symbol)
- super(logic)
- @db_symbol = db_symbol
-end
-```
-
-`register` : permet d’enregistrer de nouveaux effets météo en associant un `db_symbol` à une classe (`klass`) qui représente l’effet météo.
-
-```ruby
-class << self
- # Register a new weather
- # @param db_symbol [Symbol] db_symbol of the weather
- # @param klass [Class] class of the weather effect
- def register(db_symbol, klass)
- @registered_weathers[db_symbol] = klass
- end
-```
-
-Instantiation : Une autre méthode de classe `new` crée des instances des effets météo enregistrés sur la base du `db_symbol` fourni.
-
-```ruby
-# Create a new Weather effect
-# @param logic [Battle::Logic]
-# @param db_symbol [Symbol] db_symbol of the weather
-# @return [Weather]
-def new(logic, db_symbol)
- klass = @registered_weathers[db_symbol] || Weather
- object = klass.allocate
- object.send(:initialize, logic, db_symbol)
- return object
-end
-```
-
-## Sous-classes
-
-Chaque sous-classe de `Weather` redéfinit des méthodes pour implémenter des comportements uniques :
-
-### Fog
-
-Hérite de `Weather`, implémente `on_end_turn_event` pour réduire la durée de la météo et changer la météo en aucune si certaines conditions sont remplies.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Fog.rb?ref_type=heads" %}Voir le code de la classe Fog sur le dépôt de Pokémon SDK{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Hail
-
-Hérite de `Weather`. Semblable à `Fog` mais vérifie également l’immunité aux dégâts de grêle et applique des dégâts aux combattants non immunisés. Définit des constantes pour les talents et les objets qui bloquent les dégâts de grêle.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Hail.rb?ref_type=heads" %}Voir le code de la classe Hail sur le dépôt de Pokémon SDK{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Hardrain
-
-Hérite de `Weather`. Redéfinit `on_end_turn_event`_,_ `on_move_prevention_target`, `on_weather_prevention` et `mod1_multiplier` pour affecter les capacités et empêcher certains changements de météo.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Hardrain.rb?ref_type=heads" %}Voir le code de la classe Hardrain sur le dépôt de Pokémon SDK{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Hardsun
-
-Hérite de `Weather`. Semblable à `Hardrain` mais affecte différemment les capacités de type feu et eau.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Hardsun.rb?ref_type=heads" %}Voir le code de la classe Hardsun sur le dépôt de Pokémon SDK{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Rain
-
-Hérite de `Weather`. Réduit la durée de la météo et modifie les multiplicateurs de capacités pour les capacités de type feu et eau.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Rain.rb?ref_type=heads" %}Voir le code de la classe Rain sur le dépôt de Pokémon SDK{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Sandstorm
-
-Hérite de `Weather`. Vérifie l’immunité aux dégâts de tempête de sable et applique des dégâts aux combattants non immunisés. Modifie également les multiplicateurs de défense spéciale.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Sandstorm.rb?ref_type=heads" %}Voir le code de la classe Sandstorm sur le dépôt de Pokémon SDK{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Snow
-
-Hérite de `Weather`. Semblable à `Sandstorm` mais spécifiquement pour les conditions liées à la neige.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Snow.rb?ref_type=heads" %}Voir le code de la classe Snow sur le dépôt de Pokémon SDK{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### StrongWinds
-
-Hérite de `Weather`. Affecte les Pokémon de type vol et modifie l’efficacité des types dans certaines conditions.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20StrongWinds.rb?ref_type=heads" %}Voir le code de la classe StrongWinds sur le dépôt de Pokémon SDK{% /cta %}
-
-{% /column %}
-{% /row %}
-
-### Sunny
-
-Hérite de `Weather`. Réduit la durée de la météo et modifie les multiplicateurs de capacités pour les capacités de type feu et eau.
-
-{% row columns="1/1" bottom_margin="margin-xl" %}
-{% column %}
-{% cta href="https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/scripts/5%20Battle/06%20Effects/06%20Weather%20Effects/100%20Sunny.rb?ref_type=heads" %}Voir le code de la classe Sunny sur le dépôt de Pokémon SDK{% /cta %}
-
-{% /column %}
-{% /row %}
-
-## Créer un effet de Météo de combat personnalisé
-
-Créez un monkey patch qui étend `Battle::Effects::Weather`. La classe de condition météo personnalisée doit hériter de `Weather`.
-
-Exemple : Dragon Fog (créé dans `00100_DragonFog.rb`)
-
-```ruby
-module Battle
- module Effects
- class Weather
- class DragonFog < Weather
- # Function called at the end of a turn
- # @param logic [Battle::Logic] logic of the battle
- # @param scene [Battle::Scene] battle scene
- # @param battlers [Array] all alive battlers
- def on_end_turn_event(logic, scene, battlers)
- if $env.decrease_weather_duration
- # Displays The Dragon Fog has lifted!
- scene.display_message_and_wait(parse_text(69, 07))
- logic.weather_change_handler.weather_change(:none, 0)
- else
- # Displays "The air is filled with thick Dragon Fog!"
- scene.display_message_and_wait(parse_text(69, 06))
- end
- end
-
- # Give the move mod1 mutiplier (before the +2 in the formula)
- # @param user [PFM::PokemonBattler] user of the move
- # @param target [PFM::PokemonBattler] target of the move
- # @param move [Battle::Move] move
- # @return [Float, Integer] multiplier
- def mod1_multiplier(user, target, move)
- return 0.5 if move.type_fairy?
- return 1.5 if move.type_dragon?
-
- return 1
- end
- end
- register(:dragon_fog, DragonFog)
- end
- end
-end
-```
-
diff --git a/src/content/pages/help/event-making-in-rmxp/create-a-pokemon-shop_en.mdoc b/src/content/pages/help/event-making-in-rmxp/create-a-pokemon-shop_en.mdoc
deleted file mode 100644
index 7b9ce50..0000000
--- a/src/content/pages/help/event-making-in-rmxp/create-a-pokemon-shop_en.mdoc
+++ /dev/null
@@ -1,108 +0,0 @@
----
-title: Create a Pokemon shop
-seoDescription: How to create a shop of Pokémon in RPG Maker XP
-publishDate: '2022-09-02 18:55:00'
-order: 0
----
-
-
-
-For starters, it's important to note that, as the Shop, the Pokemon Shop will not accept selling Pokemon with a price inferior or equal to 0. Moreover, there are also two types of Pokemon Shop which can be opened.
-
-## Open an unlimited shop
-
-There is only a way to open an unlimited shop which you have to respect otherwise your shop won't be able to work :
-
-### Using a script command
-
-This method requires that you use the `pokemon_shop_open` script command, in order to open a Shop whose the prices are declared at the beginning (Pokemon don't have prices in the database, therefore you MUST give them one). This commands requires three mandatory and an optional parameter (which can disable the background) which we will detail later.
-
-
-
-The first parameter initializes the Pokemon list of the Shop, which can be an array of ID or a Symbol (we are going to see it later, with limited Pokemon Shops). The second parameter is an Array or a Hash, to define or redefine Pokemon price. The third parameter can only be an Array and gives all specific information about selled Pokemon. To top it all, the fourth parameter has to be called in the method and must be a Boolean(true or false), in order to turn on or off the animated background of the interface of the shop.
-
-
-
-Here's an example we'll analyze together :
-
-```ruby
-pokemon_shop_open([4, 17, 22, 50], [2500, 5000, 10000, 0], [5, 50, 30, {level: 100, shiny: true}], show_background: true)
-```
-
-The first parameter is `[4, 17, 22, 50]`. It tells the shop it will sell : Charmander, Pidgeotto, Fearow and Diglett.
-
-The second parameter is `[2500, 5000, 10000, 0]`. It tells the shop the Pokemon prices. In this case, Charmander costs 2500 Pokedollars, Pidgeotto costs 5000 P$, Fearow costs 10000 P$ and Diglett won't be selled since its price is set to 0. If you remove this price, Diglett won't have price and won't be selled too, it has the same effect. Keep this in mind : A Pokemon = a price.
-
-The third parameter corresponds to `[5, 50, 30, {level: 100, shiny: true}]` and is NECESSARY (you have to add one parameter per Pokemon added in the Shop). It tells the shop the necessary datas to create Pokemon. There are two cases : first case, you put only a number =\> it'll correspond to the Pokemon level; second case, you give a Hash which gives precise information about the Pokemon. Here, the shop will sell Level 5 Charmanders, level 50 Pidgeottos,level 30 Fearows, and level 100 Digletts, necessarily shinies (unless the price is set to 0, which is the case here :b)
-
-The fourth parameter is `show_background: true` and is optional. Its default value is true. As such, we could as well not have mentioned it in the command. It tells the shop it should use an animated background. True to enable, false to disable.
-
-The syntax really is important. The first three parameters are incased in [], and the fourth is "show\_background: " followed by its boolean value.
-
-## Open a limited shop
-
-### Creation of the stock of the shop
-
-To open a limited shop, you'll first need to create a shop with the list of available Pokemon and their quantities. You'll need to that end the script command `add_new_pokemon_shop`. It takes four mandatory parameters and two optional ones. Let's analyze this with an example.
-
-```ruby
-add_new_pokemon_shop(:pkm_shop_celadon, [1, 2, 3], [1250, 2500, 5000], [5, 16, {level: 36, shiny: true}], [3, 2, 1], shop_rewrite: false)
-```
-
-I admit, this command is scary. It will be less scary after analyzing it. The first parameter is `:pkm_shop_celadon` and is required. It gives a "name" to your shop, which will serve later as an id for another command.
-
-The three following parameters exactly correspond to previous parameters evoqued in the unlimited shop part. Hence, using 2, 3 et 4 parameters, we get this piece of information : the shop will sell Lv. 5 Bulbasaurs costing 1250 P$, Lv.16 Ivysaur costing 2500 P$, and Lv.36 Shiny Venusaur costing 5000 P$.
-
-Concerning the fifth parameter, it is optional. It concerns this command part : `[3, 2, 1]` and tells to the shop that it can sell 3 Bulbasaur, 2 Ivysaur and a Venusaur. If the Array doesn't include enough entries or if there isn't Array, the shop will have, by default, only one Pokemon of each Pokemon that were sent as a parameter.
-
-The sixth one corresponds to `shop_rewrite: false` and is optional. It tells if the command has to replace the existing shop or not when you are creating the shop. Thus, if `:pkm_shop_celadon` already exists, a true value will erase the old one by the new one, a false value will add Pokemon to the existing shop.
-
-### Replenish the stock of Pokemon in a shop
-
-As said earlier, you could use the `add_new_pokemon_shop` script command to add Pokemon to your shop. Or you could use the ad hoc command, `add_pokemon_to_shop`. This command has the exact same first five parameters as `add_new_pokemon_shop` and a sixth one `pkm_rewrite: false`. This parameter is associated to a particularity of the method which we'll explain just now.
-
-Let's admit that the shop we want to restock already has Pokemon and we want to add Pokemon in it. In this shop, there are Meowth and Alolan Meowth selled (since it's possible to have different forms from an identical Pokemon in a shop). There are two cases :
-
-- pkm\_rewrite: false -\> We add the Pokemon number given in parameter, without using parameter about Pokemon information.
-- pkm\_rewrite: true -\> We will rewrite species information about this Pokemon. Remember that the system thinks that Pokemon forms are totally different, and if you didn't give the Pokemon form in your parameters, the system will automatically target the one for which the form is equal to 0.
-
-Hence, it's impossible to have several instances of a same Meowth in the same shop, it can only have one instance of form 0 Meowth, one instance of form 1 Meowth (Alolan) etc. Keep this in mind.
-
-### Deplete the stock of a Pokemon / remove a Pokemon from a shop
-
-To reduce the available Pokemon of an item or to remove that Pokemon entirely, only one command : `remove_pokemon_from_shop`.
-
-
-
-This command has the same parameters as the stock adding one with two or three exceptions : you don't have to put a price parameter, and parameters about Pokemon infos and quantity to remove are optional. If there isn't any piece of information, the Pokemon form 0 will be automatically chosen, and if the quantity isn't defined, the shop will remove all Pokemon according to the parameters. If it is, it'll remove the Pokemon amount in the Array.
-
-
-
-Example :
-
-```ruby
-remove_pokemon_from_shop(:pkm_shop_celadon, [1, 2, 3], [{ form: 0 }, {form : 0}, {form: 1}], [1, 3, 10])
-```
-
-This command will remove 1 form 0 Bulbasaur, 3 form 0 Ivysaur, 10 form 1 Venusaur (if they exist). Note that if the quantity parameter isn't given, the Pokemon will be totally removed from the shop.
-
-### Open the limited shop
-
-Now that the stock of the shop has been created, it's time to open it. And you only need to use the aforementioned `pokemon_shop_open` script command but you have to change parameters.
-
-
-
-Remember, i said previously that it was possible to put a Symbol as first parameter and a Hash as second parameter: you just have to give your Shop Symbol as first parameter, un Hash as second parameter (a Hash for prices will be written as : { Pokemon\_ID =\> new\_price }) if you want to launch a sale on a specific Pokemon. And concerning the third parameter, it's not necessary. Moreover, it's not used when the first parameter is a Symbol. Here is an example of Limited Pokemon Shop.
-
-```ruby
-pokemon_shop_open(:pkm_shop_celadon, { 1 => 500, 4 => 800, 7 => 9000 }, show_background: true)
-```
-
-Hence, this command opens a named Pokemon Shop :pkm\_shop\_celadon, changes prices for Bulbasaur, Charmander and Squirtle (if they exist in the shop) and show the animated shop background.
-
-### Custom messages when leaving the shop
-
-This point is exactly the same as the traditional item shop, I invite you to read it if you didn't already.
-
-
-
diff --git a/src/content/pages/help/event-making-in-rmxp/create-a-pokemon-shop_fr.mdoc b/src/content/pages/help/event-making-in-rmxp/create-a-pokemon-shop_fr.mdoc
deleted file mode 100644
index d8b05b3..0000000
--- a/src/content/pages/help/event-making-in-rmxp/create-a-pokemon-shop_fr.mdoc
+++ /dev/null
@@ -1,107 +0,0 @@
----
-title: Créer un magasin de Pokémon
-seoDescription: Comment créer un magasin vendant des Pokémon dans RPG Maker XP
-order: 0
----
-
-
-
-Le magasin de Pokémon fonctionne d'une manière semblable au magasin lambda, à savoir qu'il ne vendra pas les Pokémon dont le prix est à 0. De même, deux types de magasin de Pokémon peuvent être ouverts.
-
-## Ouvrir un magasin illimité
-
-Pour ouvrir un magasin illimité, il n'existe qu'une seule méthode, qu'il faut absolument suivre à la lettre, sans quoi votre shop pourrait ne pas fonctionner correctement :
-
-### Utilisation de l'appel de script
-
-Cette méthode requiert d'utiliser la commande `pokemon_shop_open`, afin d'ouvrir un Shop dont les prix sont fixés dès le départ (les Pokémon n'ont pas de prix initial dans la base de données, il est donc impératif de leur en donner un). Cette commande requiert 3 paramètres obligatoires, et un autre facultatif (qui sert à désactiver le background ou non), que nous allons détailler par la suite.
-
-
-
-Le premier paramètre sert à initialiser la liste des Pokémon du magasin, qui peut soit prendre la forme d'un tableau à ID, soit d'un Symbol (nous y reviendrons plus tard, avec les magasins Pokémon limités). Le deuxième paramètre est soit un Array, soit un Hash (pareil, nous reviendrons sur ça), pour définir ou redéfinir le prix des Pokémon. Le troisième paramètre est forcément un Array, et sert à renseigner des informations spécifiques aux Pokémon vendus. Enfin, le quatrième paramètre doit être appelé dans la commande et doit être un Booléen (true ou false), afin d'activer ou désactiver le fond animé de l'interface du magasin.
-
-
-
-Voici un exemple que nous allons décortiquer ensemble :
-
-```ruby
-pokemon_shop_open([4, 17, 22, 50], [2500, 5000, 10000, 0], [5, 50, 30, {level: 100, shiny: true}], show_background: true)
-```
-
-Le premier paramètre correspond à [4, 17, 22, 50]. Il indique au magasin que les Pokémon à vendre sont : Salamèche, Roucoups, Rapasdepic et Taupiqueur.
-
-Le deuxième paramètre correspond à [2500, 5000, 10000, 0]. Il indique au magasin les prix des Pokémon susnommés. Nous aurons donc Salamèche à 2500 Pokédollars, Roucoups à 5000 Pokédollars, Rapasdepic à 10000 Pokédollars, et Taupiqueur ne sera tout simplement pas vendu, son prix étant de 0. Si ce 0 est enlevé, cela fera exactement la même chose, Taupiqueur n'aura pas de prix et ne sera donc pas vendu. Gardez bien à l'esprit : un Pokémon = un prix.
-
-Le troisième paramètre correspond à [5, 50, 30, {level: 100, shiny: true}] et est OBLIGATOIRE (vous devez ajouter autant de paramètres que vous avez ajouté de Pokémon). Il indique au magasin les données nécessaires à la création des Pokémon. Il y a deux cas de figure : premier cas, vous mettez simplement un chiffre =\> cela correspondra au niveau du Pokémon; deuxième cas, vous fournissez un hash qui donnera des informations bien plus précises concernant le Pokémon. Ici, le magasin vendra donc des Salamèche niveau 5, des Roucoups niveau 50, des Rapasdepic niveau 30, et des Taupiqueur niveau 100, obligatoirement shiny (sauf si le prix est de 0, ce qui est le cas ici :b)
-
-Le quatrième paramètre correspond à show\_background: true et est facultatif. Sa valeur de base est réglée sur true quoi qu'il arrive. Si vous n'en avez pas besoin, vous pouvez même ne pas le mettre dans votre commande. Il indique au magasin s'il faut afficher le fond animé ou non. True pour l'afficher, false pour ne pas l'afficher.
-
-Il est nécessaire de respecter la façon d'écrire cette méthode. Les trois premiers paramètres s'écrivent avec des [], et le quatrième avec show\_background: suivi de la valeur à assigner.
-
-## Ouvrir un magasin limité
-
-### Création du stock du magasin
-
-Pour ouvrir un magasin Pokémon limité, il faut d'abord créer un magasin qui contiendra les Pokémon et le nombre disponible pour chacun d'eux. Pour cela, il faudra utiliser la commande `add_new_pokemon_shop`. Cette commande prend 4 paramètres obligatoires, et 2 paramètres facultatifs. Détaillons ensemble ces paramètres avec un exemple.
-
-```ruby
-add_new_pokemon_shop(:pkm_shop_celadon, [1, 2, 3], [1250, 2500, 5000], [5, 16, {level: 36, shiny: true}], [3, 2, 1], shop_rewrite: false)
-```
-
-Je l'admets, cette commande fait PEUR. Elle fera largement moins peur une fois décortiquée.
-
-Le premier paramètre correspond à `:pkm_celadon_shop` et est obligatoire. Il permet de donner un "nom" à votre magasin, ce sera ce nom qu'il faudra renseigner plus tard à une autre commande.
-
-Les trois paramètres suivant correspondent EXACTEMENT aux précédents paramètres évoqués dans le magasin illimité. Ainsi, en combinant les paramètres 2, 3 et 4, on obtient l'information suivante : le magasin vendra des Bulbizarre Nv.5 coûtant 1250 P$, des Herbizarre Nv.16 coûtant 2500 P$, et des Florizarre Nv.36 shiny coûtant 5000 P$.
-
-Concernant le 5ème paramètre, celui-ci est facultatif. Il concerne cette partie de la commande : [3, 2, 1] et indique au magasin qu'il est possible de vendre 3 Bulbizarre, 2 Herbizarre et un Florizarre. Si le tableau ne contient pas suffisamment d'entrées ou s'il n'y a pas de tableau, le magasin possédera par défaut qu'un seul spécimen de chaque Pokémon envoyé en paramètre.
-
-Le sixième paramètre correspond à shop\_rewrite: false et est facultatif. Il indique s'il faut écraser le magasin existant ou non lors de la création du magasin. Ainsi, si :pkm\_shop\_celadon existe déjà, une valeur true effacera l'ancien avec le nouveau, une valeur false ne fera qu'ajouter les Pokémon dans le magasin existant.
-
-### Remise en stock de Pokémon dans un magasin
-
-Comme dit précédemment, vous pourriez utiliser la commande `add_new_pokemon_shop` pour ajouter des Pokémon à votre magasin. Ou bien vous pouvez utiliser une commande faite pour, `add_pokemon_to_shop`. Cette commande prend exactement les 5 mêmes premiers paramètres que `add_new_pokemon_shop`. Elle possède aussi un sixième paramètre, pkm\_rewrite: false. Ce paramètre s'associe au fonctionnement légèrement particulier de cette méthode, fonctionnement qui va être expliqué par la suite.
-
-Admettons que le magasin que nous voulons remplir possède déjà des Pokémon, et que nous voulons rajouter des Pokémon dedans. Dans ce magasin, il y est vendu un Miaouss et un Miaouss d'Alola (car il est possible de posséder plusieurs formes d'un même Pokémon dans un même magasin). Il existe ainsi deux cas de figure :
-
-- pkm\_rewrite: false -\> on ajoute le nombre d'exemplaire que nous avons fourni en paramètre, sans prendre compte du paramètre concernant les informations du Pokémon
-- pkm\_rewrite: true -\> on réécrit les informations contenues dans le magasin concernant cette espèce. Sachez que le système différencie totalement les différentes formes d'un Pokémon, et que si vous ne fournissez pas la forme du Pokémon ciblé dans vos paramètres, le système ciblera automatiquement celui dont la forme est égale à 0.
-
-Ainsi, il est totalement impossible d'avoir différentes instances d'un même Miaouss dans un même magasin, il ne peut y avoir qu'une seule instance de Miaouss forme 0, une seule de Miaouss forme 1 (Alola) etc. Retenez bien cette information.
-
-### Enlever du stock à un Pokémon / enlever totalement un Pokémon d'un magasin
-
-Pour enlever du stock à un Pokémon ou pour enlever ce Pokémon complètement, une seule commande : `remove_pokemon_from_shop`.
-
-
-
-Cette commande prend les mêmes paramètres que celle pour ajouter du stock, à deux-trois exceptions près : le paramètre concernant le prix n'est pas à mettre, et les paramètres concernant les infos du Pokémon à enlever et la quantité à enlever sont facultatives. Si les infos ne sont pas renseignées, la forme 0 du Pokémon sera automatiquement choisi, et si la quantité à enlever n'est pas renseignée le magasin supprimera tous les Pokémon fournis en paramètre. S'il est fourni, il supprimera le nombre de Pokémon correspondant à sa place dans le tableau.
-
-
-
-Exemple :
-
-```ruby
-remove_pokemon_from_shop(:pkm_shop_celadon, [1, 2, 3], [{ form: 0 }, {form : 0}, {form: 1}], [1, 3, 10])
-```
-
-Cette commande enlèvera 1 Bulbizarre forme 0, 3 Herbizarre forme 0 et 10 Florizarre forme 1 (s'ils existent bien entendu). A noter que si le paramètre quantité à enlever n'est pas donné, le magasin supprimera totalement le Pokémon du magasin.
-
-### Ouverture du magasin limité
-
-Maintenant que nous avons créé le stock du magasin, il faut l'ouvrir. Pour cela, il suffit de reprendre la commande pour ouvrir un magasin Pokémon illimité `pokemon_shop_open` mais de changer les paramètres.
-
-
-
-Souvenez-vous, il a été dit plus haut qu'il était possible de mettre un Symbol en premier paramètre et un Hash en deuxième paramètre: il vous suffit simplement de renseigner le Symbol de votre magasin dans le premier paramètre, un Hash en deuxième paramètre (un Hash pour les prix s'écrit ainsi : { ID\_du\_Pokemon =\> nouveau\_prix }) si vous souhaitez faire une promotion sur un/plusieurs Pokemon. Et en ce qui concerne le troisième paramètre, il n'est pas nécessaire. Mieux, il n'est pas utilisé lorsque le premier paramètre est un Symbol. Voici donc un exemple de magasin Pokémon limité.
-
-```ruby
-pokemon_shop_open(:pkm_shop_celadon, { 1 => 500, 4 => 800, 7 => 9000 }, show_background: true)
-```
-
-Ainsi, cette commande ouvre un magasin Pokémon nommé :pkm\_shop\_celadon, change les prix pour Bulbizarre, Salamèche et Carapuce (s'ils existent dans le magasin) et affiche le fond animé du magasin.
-
-### Messages personnalisés lors de la fermeture du magasin
-
-Ce point est exactement le même que dans le tutoriel du magasin d'objets, je vous invite à vous y rendre pour lire ce point si ce n'est pas déjà fait.
-
diff --git a/src/content/pages/help/event-making-in-rmxp/create-a-shop_en.mdoc b/src/content/pages/help/event-making-in-rmxp/create-a-shop_en.mdoc
deleted file mode 100644
index 8225e47..0000000
--- a/src/content/pages/help/event-making-in-rmxp/create-a-shop_en.mdoc
+++ /dev/null
@@ -1,97 +0,0 @@
----
-title: Create a shop
-seoDescription: How to create a shop where to buy and sell items in RPG Maker XP
-publishDate: '2022-09-02 18:50:00'
-order: 0
----
-
-
-
-For starters, it's important to note that the Shop will not accept selling items with a price inferior or equal to 0. Keep that in mind, it's really important for the rest of the tutorial.
-
-
-
-There are two types of shops : those with unlimited stock and those with limited stock. This tutorial will teach you how to handle both.
-
-## Open an unlimited shop
-
-Here's how to open an unlimited shop :
-
-To open an unlimited shop, you have to use the `open_shop` script command. This command lets you temporarily change the price of your items, if you want. This commands accepts one mandatory and two optional parameters. Let's have a look.
-
-The `open_shop` script command obviously needs as first parameter a list of items to be sold, either as an ID Array or a Symbol (which we'll discuss later when we'll see the limited shops). The second parameter must be a Hash, to allow temporarily changing the price of some items. Finally, the third parameter is a Boolean (true ou false), and turns on or off the animated background of the interface of the shop.
-
-Here's an example we'll analyze together :
-
-```ruby
-open_shop([:poke_ball, :potion, :antidote, :paralyze_heal], {poke_ball: 150, potion: 300, paralyze_heal: 400}, show_background: true)
-```
-
-The first parameter is {poke\_ball: 150, potion: 300, paralyze\_heal: 400} and is **required**. It tells the shop it will sell : Poké Balls, Potions, Antidotes and Paralyze Heals. Easy, right?
-
-The second parameter is {poke\_ball: 150, potion: 300, paralyze\_heal: 400} and is **optional**. It tells the shop some items have another price than usual. In this case, the Poké Balls price is reduced to 150, the Potions price rises to 300 and Paralyze Heals price rises to 400. Antidotes have their default price.
-
-The third parameter is show\_background: true and is just as **optional**. Its default value is true. As such, we could as well not have mentioned it in the command. It tells the shop if it should use an animated background or not. True to enable it, false to disable it (thus showing the map in the background).
-
-The syntax really is important. The first parameter is incased in [], the second in {}, and the third is "show\_background: " followed by its boolean value.
-
-## Open a limited shop
-
-### Creation of the stock of the shop
-
-To open a limited shop, you'll first need to create a shop with the list of available items and quantities. You'll need to that end the script command `add_items_to_limited_shop`. It takes two mandatory parameters and two optional ones. Let's analyze this with an example.
-
-```ruby
-add_limited_shop(:shop_argenta, [:poke_ball, :potion, :antidote, :paralyze_heal], [5, 3, 2, 1], shop_rewrite: false)
-```
-
-The first parameter is :shop\_argenta and is required. It gives a name to your shop, which will serve later as an id for another command.
-
-The second parameter is [:poke\_ball, :potion, :antidote, :paralyze\_heal] and is also required. It tells the shop the available items are : Poké Balls, Potions, Antidotes and Paralyze Heals.
-
-The third parameter, [5, 3, 2, 1], is optional. It tells the shop how many of each items are available, in the same order as the previous Array. Meaning we'll have : 5 Poké Balls, 3 Potions, 2 Antidotes et 1 Paralyze Heal. If the Array doesn't hold enough entries or there's no Array at all, the shop will have only 1 unit of each item by default.
-
-The fourth parameter is shop\_rewrite: false and is optional. It tells the command if it should overwrite an existing shop with the same name. In the example, if :shop\_argenta already exists, true would overwrite the old shop, false would merely add the new items to the old shop.
-
-### Replenish the stock of items in a shop
-
-As said earlier, you could use the `add_limited_shop` script command to add items to your shop. Or you could use the ad hoc command, `add_items_to_limited_shop`. This command has the exact same first three parameters as `add_limited_shop`.
-
-### Deplete the stock of an item / remove an item from a shop
-
-To reduce the available stock of an item or to remove that item entirely, only one command : `remove_items_from_limited_shop`.
-
-
-
-This command accepts the same parameters as the command to add stock, except that the parameter about the amount to remove is optional. And if it's not used, then the item will be removed entirely from the shop. If it's used, it will remove the amount of items according to its position in the Array.
-
-
-
-Example :
-
-```ruby
-remove_items_from_limited_shop(:shop_argenta, [:poke_ball, :potion, :antidote, :paralyze_heal], [10, 15, 20])
-```
-
-This command will remove 10 Poké Balls, 15 Potions, 20 Antidotes, and completely remove Paralyze Heals from sales because there was no 4th number in the 3rd parameter.
-
-### Open the limited shop
-
-Now that the stock of the shop has been created, it's time to open it. And you only need to use the aforementioned `open_shop` script command with a twist in the parameters.
-
-
-
-If you remember, it was said that you could give a Symbol as first parameter for that command : that's the name you gave to your shop. You only need to use that Symbol as first parameter, the rest is the exact same thing as earlier.
-
-### Custom messages when leaving the shop
-
-The new Shop includes 5 different scénarios allowing you to create custom messages depending how the player left the Shop. To use this feature, you only need to create a condition using the value of game variable 26 TMP1. Here are its possible values and what they mean :
-
-- -1 : The shop could not open (no more stock)
-- 0 : The player left having bought nothing
-- 1 : The player left having bought 1+ units of the same item (1 Hyper Ball or 50 Hyper Ball will lead here)
-- 2 : The player left having bought different items
-- 3 : The player left having bought everything the shop had to offer, leaving it now empty (which will cause the auto closing of this shop and scenario in -1 afterwards)
-
-
-
diff --git a/src/content/pages/help/event-making-in-rmxp/create-a-shop_fr.mdoc b/src/content/pages/help/event-making-in-rmxp/create-a-shop_fr.mdoc
deleted file mode 100644
index ef44d6d..0000000
--- a/src/content/pages/help/event-making-in-rmxp/create-a-shop_fr.mdoc
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Créer un Magasin (shop)
-seoDescription: Comment créer un magasin d'objet dans RPG Maker XP
-order: 0
----
-
-
-
-Avant toute chose, il est important de noter que le Shop n'acceptera pas de vendre des objets dont le prix est inférieur ou égal à 0. Retenez bien cette information, elle est importante pour la suite.
-
-
-
-Il existe deux types de magasins : les magasins illimités et les magasins limités. Ce tutoriel vous apprendra à ouvrir des magasins des deux types.
-
-## Ouvrir un magasin illimité
-
-Pour ouvrir un magasin illimité, voici comment faire :
-
-Pour ouvrir un magasin illimité, il vous faudra utiliser la commande `open_shop`. Cette commande permet d'ouvrir un magasin en laissant la possibilité de changer temporairement le prix des objets, si vous le désirez. Cette commande prend 1 paramètre obligatoire, et deux paramètres facultatifs. Voyons ça ensemble.
-
-La commande open\_shop nécessite donc un premier paramètre pour initialiser la liste d'objets du magasin, qui peut soit prendre la forme d'un tableau de db\_symbol, soit d'un Symbol (nous y reviendrons plus tard, avec les magasins limités). Le deuxième paramètre doit être un Hash, pour permettre de réécrire temporairement le prix de certains objets. Enfin, le troisième paramètre doit être appelé dans la commande et doit être un Booléen (true ou false), afin d'activer ou désactiver le fond animé de l'interface du magasin.
-
-Voici un exemple que nous allons décortiquer ensemble :
-
-```ruby
-open_shop([:poke_ball, :potion, :antidote, :paralyze_heal], {poke_ball: 150, potion: 300, paralyze_heal: 400}, show_background: true)
-```
-
-Le premier paramètre correspond à [:poke\_ball_,_ :potion, :antidote, :paralyze\_heal] et est obligatoire. Il indique au magasin que les objets à vendre sont : Poké Ball, Potion, Antidote et Anti-Para. Jusqu'ici, aucun problème.
-
-Le deuxième paramètre correspond à {poke\_ball: 150, potion: 300, paralyze\_heal: 400} et est facultatif. Il indique au magasin qu'il faut temporairement changer le prix de certains objets. Ici, il s'agit de descendre le prix des Poké Balls à 150, monter le prix des Potions à 300 et celui des Anti-Paras à 400. Celui des Antidote reste inchangé.
-
-Le troisième paramètre correspond à show\_background: true et est aussi facultatif. Sa valeur de base est réglée sur true quoi qu'il arrive. Si vous n'en avez pas besoin, vous pouvez même ne pas le mettre dans votre commande. Il indique au magasin s'il faut afficher le fond animé ou non. True pour l'afficher, false pour ne pas l'afficher.
-
-Il est nécessaire de respecter la façon d'écrire cette méthode. Le premier paramètre s'écrit donc avec des [], le deuxième avec des {}, et le troisième avec show\_background: suivi de la valeur à assigner.
-
-## Ouvrir un magasin limité
-
-### Création du stock du magasin
-
-Pour ouvrir un magasin limité, il faut d'abord créer un magasin qui contiendra les objets et le nombre disponible pour chacun d'eux. Pour cela, il faudra utiliser la commande `add_items_to_limited_shop`. Cette commande prend 2 paramètres obligatoires, et deux paramètres facultatifs. Détaillons ensemble ces paramètres avec un exemple.
-
-```ruby
-add_limited_shop(:shop_argenta, [:poke_ball, :potion, :antidote, :paralyze_heal], [5, 3, 2, 1], shop_rewrite: false)
-```
-
-Le premier paramètre correspond à :shop\_argenta et est obligatoire. Il permet de donner un "nom" à votre magasin, ce sera ce nom qu'il faudra renseigner plus tard à une autre commande.
-
-Le deuxième paramètre correspond à [:poke\_ball, :potion, :antidote, :paralyze\_heal] et est obligatoire. Il indique au magasin que les objets à vendre sont : Poké Ball, Potion, Antidote et Anti-Para.
-
-Le troisième paramètre, correspondant à [5, 3, 2, 1], est facultatif. Il indique au magasin le stock de chaque objet, dans l'ordre d'apparition des objets dans le tableau. Nous aurons donc ici : 5 Poké Balls, 3 Potions, 2 Antidotes et 1 Anti-Para. Si le tableau ne contient pas suffisamment d'entrées ou s'il n'y a pas de tableau, le magasin possédera par défaut qu'un exemplaire de chaque objet envoyé en paramètre.
-
-Le quatrième paramètre correspond à shop\_rewrite: false et est facultatif. Il indique s'il faut écraser le magasin existant ou non lors de la création du magasin. Ainsi, si :shop\_argenta existe déjà, une valeur true effacera l'ancien avec le nouveau, une valeur false ne fera qu'ajouter les objets dans le magasin existant.
-
-### Remise en stock d'objets dans un magasin
-
-Comme dit précédemment, vous pourriez utiliser la commande `add_limited_shop` pour ajouter des objets à votre magasin. Ou bien vous pouvez utiliser une commande faite pour, `add_items_to_limited_shop`. Cette commande prend exactement les 3 mêmes premiers paramètres que `add_limited_shop`.
-
-### Enlever du stock à un objet / enlever totalement un objet d'un magasin
-
-Pour enlever du stock à un objet ou pour enlever cet objet complètement, une seule commande : `remove_items_from_limited_shop`.
-
-
-
-Cette commande prend les mêmes paramètres que celle pour ajouter du stock, à une exception près : le paramètre concernant le stock à enlever est facultatif. S'il n'est pas renseigné, le magasin supprimera tous les objets fournis en paramètre. S'il est fourni, il supprimera le nombre d'articles correspondant à sa place dans le tableau.
-
-
-
-Exemple :
-
-```ruby
-remove_items_from_limited_shop(:shop_argenta, [:poke_ball, :potion, :antidote, :paralyze_heal], [10, 15, 20])
-```
-
-Cette commande enlèvera 10 Poké Balls, 15 Potions, 20 Antidotes, et tout le stock d'Anti-Para car aucun nombre n'a été renseigné.
-
-### Ouverture du magasin limité
-
-Maintenant que nous avons créé le stock du magasin, il faut l'ouvrir. Pour cela, il suffit de reprendre la commande pour ouvrir un magasin illimité `open_shop` mais de changer les paramètres.
-
-
-
-Souvenez-vous, il a été dit plus haut qu'il était possible de mettre un Symbol en premier paramètre : il vous suffit simplement de renseigner le Symbol de votre magasin dans le premier paramètre, et le reste c'est exactement pareil qu'expliqué plus haut.
-
-### Messages personnalisés lors de la fermeture du magasin
-
-Le nouveau Shop inclut 5 scénarios distincts vous permettant de créer des messages personnalisés en fonction de comment votre joueur quitte le Shop. Pour utiliser cette fonctionnalité, il vous suffit de créer une condition utilisant la valeur de la variable 26 TMP1. Voici la liste des valeurs que cette variable peut adopter et leurs significations :
-
-- -1 : Le magasin n'a pas pu s'ouvrir (n'a plus de stock)
-- 0 : Le joueur a quitté le magasin sans rien acheter
-- 1 : Le joueur a quitté le magasin en achetant un ou plusieurs mêmes objets (1 Hyper Ball ou 50 Hyper Ball causeront ce scénario)
-- 2 : Le joueur a quitté le magasin en achetant plusieurs articles différents
-- 3 : Le joueur a dévalisé le magasin (causera la fermeture automatique de ce dernier)
-
-
-
diff --git a/src/content/pages/help/event-making-in-rmxp/edit-event-attributes_en.mdoc b/src/content/pages/help/event-making-in-rmxp/edit-event-attributes_en.mdoc
deleted file mode 100644
index 96b6346..0000000
--- a/src/content/pages/help/event-making-in-rmxp/edit-event-attributes_en.mdoc
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Edit Event attributes
-seoDescription: How to manage event attributes such as shadow, elevation offset etc...
-publishDate: '2022-09-02 21:00:00'
-order: 0
----
-
-In PSDK the name of the event allows you to modify its attributes. This page details all of them.
-
-## Show an event without Shadow
-
-If you don't want shadow under an event, start its name by the following tag : `§`
-
-## Show an event on top of the player when it's at the same row
-
-If you'd like to perform the same effect as tileset priority 1 on an event start its name by the following tag : `¤`
-
-## Disable particles on an event
-
-Use the tag `[particle=off]` in the event name to disable particles on it.
-
-## Don't create a sprite for this event
-
-Use the tag `[sprite=off]` in the event name to prevent PSDK from generating a `Sprite_Character` object for this event.
-
-## Elevate an event
-
-To elevate an event (like birds) use the following tag `[offset_y={y}]` in its name. Replace `{y}` by the number of pixel on a 32x32 grid (2 = 1px to the bottom, -2 = 1px to the top).
-
-## Set page 1 appearance to all other pages
-
-To set the page 1 appearance to all the other pages of the event, put the following character in event name : `$`. This saves a lot of Making time.
-
-## Create an invisible item
-
-To make an event act like an invisible item, put the following tag in its name : `invisible_`.
-
-## Create a swimmer
-
-To allow an event to walk in water & not ground like swimmer, put this tag in its name : `surf_`
-
diff --git a/src/content/pages/help/event-making-in-rmxp/edit-event-attributes_fr.mdoc b/src/content/pages/help/event-making-in-rmxp/edit-event-attributes_fr.mdoc
deleted file mode 100644
index e56f1a8..0000000
--- a/src/content/pages/help/event-making-in-rmxp/edit-event-attributes_fr.mdoc
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Modifier les attributs des évènements
-seoDescription: Comment gérer certaines propriétés des évènements telles que leurs
- ombre, leur élévation etc...
-order: 0
----
-
-Dans PSDK le nom de l'évènement permet de modifier les attributs de celui-ci. Cette page les détaille tous.
-
-## Afficher un évènement sans ombre
-
-Si vous voulez qu'un évènement n'ait pas d'ombre, commencez son nom par le caractère suivant : `§`
-
-## Afficher un évènement au dessus du héros à couche égale
-
-Si vous voulez qu'un évènement soit affiché à peu près comme un élément de priorité 1, commencez son nom par le caractère suivant : `¤`
-
-## Désactiver les particules sur un évèment
-
-Pour désactiver les particules sur un évènement, utilisez le tag `[particle=off]` dans son nom.
-
-## Désactiver l'affichage total de l'évènement
-
-Pour désactiver l'affichage total d'un évènement (par exemple évènement qui déroule le scénario ou détecteur) ajoutez le tag suivant dans son nom `[sprite=off]`.
-
-## Elever un évènement
-
-Pour faire flotter un évènement (comme un oiseau) utilisez le tag `[offset_y={y}]`. Remplacez `{y}` par le nombre de pixel d'élévation si le jeu fonctionnait avec des tiles de 32x32 (2 = 1px vers le bas, -2 = 1px vers le haut).
-
-## Appliquer l'apparence à toute les pages
-
-Pour n'avoir à configurer l'apparence qu'en page 1 il suffit d'ajouter le caractère suivant dans le nom `$`. Ceci vous permet de gagner du temps en évent making.
-
-## Créer un objet invisible
-
-Pour créer un objet invisible il faut que le nom de l'évènement contienne : `invisible_`.
-
-## Créer un nageur
-
-Pour créer un nageur (évènement qui marche sur l'eau mais pas la terre) il faut que le nom contienne : `surf_`
-
diff --git a/src/content/pages/help/event-making-in-rmxp/give-a-badge_en.mdoc b/src/content/pages/help/event-making-in-rmxp/give-a-badge_en.mdoc
deleted file mode 100644
index d1d397e..0000000
--- a/src/content/pages/help/event-making-in-rmxp/give-a-badge_en.mdoc
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: Give a badge
-seoDescription: How to handle badges from RMXP in Pokémon SDK
-publishDate: '2022-09-02 18:45:00'
-order: 0
----
-
-## Give a badge to the player
-
-### Command
-
-To give a badge to the player you can use the following command :
-
-```ruby
-$trainer.set_badge(badge_num, region_num, obtenu_ou_non)
-```
-
-Where :
-
-- `badge_num`is the no. of the badge (1, 2, 3, 4, 5, 6, 7, 8)
-- `region_num`is the no. of the game region (1, 2, ...). It's 1 by default.
-- `obtenu_ou_non`:`true`true if you want the badge to be considered obtained, false otherwise. (true by default).
-
-### Examples
-
-Give the 5th badge :
-
-```ruby
-$trainer.set_badge(5)
-```
-
-Withdraw the 5th badge :
-
-```ruby
-$trainer.set_badge(5, 1, false)
-```
-
-Give the 5th badge of the 3rd region :
-
-```ruby
-$trainer.set_badge(5, 3)
-```
-
-## Getting how many badges the player has got so far
-
-To get exactly how many badges the player possesses, use the following command :
-
-```ruby
-$trainer.badge_counter
-```
-
-## Check if the player has a specific badge
-
-### Command
-
-To detect if the player has got a specific badge, you can use the command :
-
-```ruby
-$trainer.badge_obtained?(badge_num, region_num)
-```
-
-### Examples
-
-Check if the player has got the 5th badge:
-
-```ruby
-$trainer.badge_obtained?(5)
-```
-
-Detect if the player has got the 5th badge of the 3rd region :
-
-```ruby
-$trainer.badge_obtained?(5, 3)
-```
-
diff --git a/src/content/pages/help/event-making-in-rmxp/give-a-badge_fr.mdoc b/src/content/pages/help/event-making-in-rmxp/give-a-badge_fr.mdoc
deleted file mode 100644
index cf13a7a..0000000
--- a/src/content/pages/help/event-making-in-rmxp/give-a-badge_fr.mdoc
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: Donner un badge
-seoDescription: Comment gérer les badges dans RMXP pour Pokémon SDK
-order: 0
----
-
-## Donner un badge au joueur
-
-### Commande
-
-Pour donner un badge au joueur vous pouvez utiliser la commande suivante :
-
-```ruby
-$trainer.set_badge(badge_num, region_num, obtenu_ou_non)
-```
-
-Les paramètres sont :
-
-- `badge_num`: Le numéro du badge (1, 2, 3, 4, 5, 6, 7, 8)
-- `region_num`: Le numéro de la région de votre jeu (1, 2, ...). 1 par défaut.
-- `obtenu_ou_non`:`true`si vous voulez que le badge soit considéré comme obtenu,`false`sinon. (true par défaut).
-
-### Exemples
-
-Donner le 5ème badge :
-
-```ruby
-$trainer.set_badge(5)
-```
-
-Retirer le 5ème badge :
-
-```ruby
-$trainer.set_badge(5, 1, false)
-```
-
-Donner le 5ème badge de la 3ème région de votre jeu :
-
-```ruby
-$trainer.set_badge(5, 3)
-```
-
-## Connaître le nombre de badge possédé par le joueur
-
-Pour connaître le nombre exact de badge que le joueur possède, utilisez la commande :
-
-```ruby
-$trainer.badge_counter
-```
-
-## Détecter si le joueur possède un badge en particulier
-
-### Commande
-
-Pour détecter la possession d'un badge vous pouvez utiliser la commande de condition :
-
-```ruby
-$trainer.badge_obtained?(badge_num, region_num)
-```
-
-### Exemples
-
-Détecter si le joueur possède le 5ème badge :
-
-```ruby
-$trainer.badge_obtained?(5)
-```
-
-Détecter si le joueur possède le 5ème badge de la 3ème région :
-
-```ruby
-$trainer.badge_obtained?(5, 3)
-```
-
diff --git a/src/content/pages/help/event-making-in-rmxp/give-a-pokemon_en.mdoc b/src/content/pages/help/event-making-in-rmxp/give-a-pokemon_en.mdoc
deleted file mode 100644
index 23121f7..0000000
--- a/src/content/pages/help/event-making-in-rmxp/give-a-pokemon_en.mdoc
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: Give a Pokemon
-seoDescription: How to give a Pokemon to the player from RMXP in Pokémon SDK
-publishDate: '2022-09-02 18:20:00'
-order: 0
----
-
-## Give a Pokemon to the player (stored in Party)
-
-### Command
-
-To give a Pokemon to the player, enter the following script command :
-
-```ruby
-pokemon = add_pokemon(id, level, shiny)
-```
-
-The parameters are :
-
-- `id`: db\_symbol of the Pokemon (db\_symbol or # field of the [List of Pokémon](https://psdk.pokemonworkshop.com/db/db_pokemon.html)
-- `level`: Level of the Pokemon
-- `shiny`: true if you want the Pokemon to be shiny, false if you want to let the game decide. (optionnal)
-
-### Example
-
-Here are two examples where I give a level 5 Pikachu :
-
-```ruby
-add_pokemon(:pikachu, 5)
-add_pokemon(25, 5)
-```
-
-## Give a Pokémon and rename it
-
-### Command
-
-The command to give a Pokemon and rename it is the following :
-
-```ruby
-pokemon = add_rename_pokemon(id, level, shiny, num_char)
-```
-
-The parameters are :
-
-- `id`: db\_symbol of the Pokemon (db\_symbol or # field of the [List of Pokémon](https://psdk.pokemonworkshop.com/db/db_pokemon.html)
-- `level`: Level of the Pokemon
-- `shiny`: true if you want the Pokemon to be shiny, false if you want to let the game decide. (optionnal)
-- `num_char`: Number of character for the Pokémon's name (10 by default).
-
-### Example
-
-Here's an example where I give a level 5 Pikachu that can be renamed with 8 characters:
-
-```ruby
-add_rename_pokemon(:pikachu, 5, false, 8)
-```
-
-## Give a specific Pokemon
-
-### Command
-
-To give a specific Pokemon, you can use the following command :
-
-```ruby
-pokemon = add_specific_pokemon(hash)
-```
-
-This method is based on the [PFM::Pokemon.generate\_from\_hash](https://psdk.pokemonworkshop.fr/yard/PFM/Pokemon.html#generate_from_hash-class_method) method. The parameters are the same.
-
-### Example
-
-Adding an Alolan Meowth :
-
-```ruby
-ajouter_pokemon_param(id: :meowth, level: 5, form: 1)
-```
-
-## Rename a Pokemon
-
-### Command
-
-You can rename a Pokemon using a command. As you may have seen, I wrote "pokemon = " before the add commands. It's because those commands return the added Pokemon if they were successfully executed. You can then parse it as first paramter of the following function (or use its index in the party) :
-
-```ruby
-rename_pokemon(poke_or_index, num_char)
-```
-
-The parameters are :
-
-- `poke_or_index`: Index du Pokémon dans l'équipe (0, 1, 2, 3, 4, 5) ou le Pokémon à renommer.
-- `num_char`: Nombre de caractères pour renommer ce Pokémon (défaut : 10).
-
-### Examples
-
-Rename the Alolan Meowth :
-
-```ruby
-meowth = add_specific_pokemon(id: :meowth, level: 5, form: 1)
-rename_pokemon(meowth, 10) if meowth
-```
-
-Rename the second Pokemon in the Party :
-
-```ruby
-renommer_pokemon(1)
-```
-
-## Add an egg to the Party
-
-### Command
-
-The command to add an egg to the party is :
-
-```ruby
-add_egg(info)
-```
-
-The info parameter can be :
-
-- The ID of the Pokemon
-- The db symbol of the Pokemon
-- The same parameter(s) used in add\_specific\_pokemon
-
-### Examples
-
-Add a Pichu egg :
-
-```ruby
-add_egg(172)
-```
-
-or
-
-```ruby
-add_egg(:pichu)
-```
-
-or
-
-```ruby
-add_egg(id: :pichu, level: 1, form: 1)
-```
-
-## Store a Pokemon in the Storage system
-
-### Command
-
-To store a Pokemon directly in the PC, the following command can be used :
-
-```ruby
-pokemon = store_pokemon(id, level, shiny)
-```
-
-The parameters are the same as for add\_pokemon.
-
diff --git a/src/content/pages/help/event-making-in-rmxp/give-a-pokemon_fr.mdoc b/src/content/pages/help/event-making-in-rmxp/give-a-pokemon_fr.mdoc
deleted file mode 100644
index 03daffc..0000000
--- a/src/content/pages/help/event-making-in-rmxp/give-a-pokemon_fr.mdoc
+++ /dev/null
@@ -1,156 +0,0 @@
----
-title: Donner un Pokémon
-seoDescription: Comment donner un Pokémon au joueur via RMXP pour Pokémon SDK
-order: 0
----
-
-RPG Maker XP n'est pas fait pour réaliser des jeux Pokémon, de ce fait le seul moyen de donner un Pokémon est d'utiliser les commandes de script.
-
-## Donner un Pokémon au joueur (enregistrement dans l'équipe)
-
-### Commande
-
-Pour donner un Pokémon au joueur entrez la commande de script suivante :
-
-```ruby
-pokemon = ajouter_pokemon(id, level, shiny)
-```
-
-Les paramètres sont :
-
-- `id`: db\_symbol du Pokémon (champ # ou db\_symbol) de la page [Liste des Pokémon](https://psdk.pokemonworkshop.com/db/db_pokemon.html)
-- `level`: Niveau du Pokémon
-- `shiny`: true si vous voulez qu'il soit shiny, false si vous voulez laisser la chance faire. (Paramètre optionnel).
-
-### Exemple
-
-Voici un exemple où je donne un Pikachu niveau 5 de deux façons différente :
-
-```ruby
-ajouter_pokemon(:pikachu, 5)
-ajouter_pokemon(25, 5)
-```
-
-## Donner un Pokémon qui peut être renommé
-
-### Commande
-
-La commande pour donner un Pokémon qui sera renommé dans la foulée est la suivante :
-
-```ruby
-pokemon = ajouter_renommer_pokemon(id, level, shiny, num_char)
-```
-
-Les paramètres sont :
-
-- `id`: ID du Pokémon (champ # ou db\_symbol) de la page [Liste des Pokémon](https://psdk.pokemonworkshop.com/db/db_pokemon.html)
-- `level`: Niveau du Pokémon
-- `shiny`: true si vous voulez qu'il soit shiny, false si vous voulez laisser la chance faire. (Paramètre optionnel).
-- `num_char`: Le nombre de caractères autorisés pour renommer le Pokémon. (Paramètre à 10 par défaut).
-
-### Exemple
-
-Voici un exemple où je donne un Pikachu niveau 5 qui sera renommé avec maximum 8 caractères :
-
-```ruby
-ajouter_renommer_pokemon(:pikachu, 5, false, 8)
-```
-
-## Donner un Pokémon paramétré
-
-### Commande
-
-Pour donner un Pokémon paramétré utilisez la commande suivante :
-
-```ruby
-pokemon = ajouter_pokemon_param(hash)
-```
-
-Cette méthode se base sur la commande [PFM::Pokemon.generate\_from\_hash](https://psdk.pokemonworkshop.fr/yard/PFM/Pokemon.html#generate_from_hash-class_method) donc les paramètres indiqués dans le Hash doivent correspondre à ce qui est écrit sur la doc.
-
-### Exemple
-
-Ajouter un Miaouss d'Alola :
-
-```ruby
-ajouter_pokemon_param(id: :meowth, level: 5, form: 1)
-```
-
-## Renommer un Pokémon
-
-### Commande
-
-Il existe une commande qui vous permet de renommer un Pokémon après coup. Comme vous l'avez vu dans la définition des commandes plus haut, j'ai mis "pokemon = " devant les commandes, c'est parce qu'en cas de succès elle retourne le Pokémon ajouté. Vous pouvez ensuite passer ce Pokémon en premier paramètre de la fonction suivante (ou simplement utiliser l'index dans l'équipe) :
-
-```ruby
-renommer_pokemon(poke_or_index, num_char)
-```
-
-Les paramètres sont :
-
-- `poke_or_index`: Index du Pokémon dans l'équipe (0, 1, 2, 3, 4, 5) ou le Pokémon à renommer.
-- `num_char`: Nombre de caractères pour renommer ce Pokémon (défaut : 10).
-
-### Exemples
-
-Renommer le miaouss d'Alola :
-
-```ruby
-miaouss = ajouter_pokemon_param(id: :meowth, level: 5, form: 1)
-renommer_pokemon(miaouss, 10) if miaouss
-```
-
-Renommer le 2ème Pokémon de l'équipe :
-
-```ruby
-renommer_pokemon(1)
-```
-
-## Ajouter un œuf à l'équipe
-
-### Commande
-
-La commande pour ajouter un œuf à l'équipe est la suivante :
-
-```ruby
-ajouter_oeuf(info)
-```
-
-Le paramètre peut être :
-
-- l'ID du Pokémon
-- le db\_symbol du Pokémon
-- le même paramètre que ajouter\_pokemon\_param
-
-### Exemples
-
-Ajout d'un œuf de Pichu :
-
-```ruby
-ajouter_oeuf(:pichu)
-```
-
-ou
-
-```ruby
-ajouter_oeuf(:pichu)
-```
-
-ou
-
-```ruby
-ajouter_oeuf(id: :pichu, level: 1, form: 1)
-```
-
-## Stocker un Pokémon directement dans le PC
-
-### Commande
-
-Pour envoyer un Pokémon directement dans le PC la commande suivante peut servir :
-
-```ruby
-pokemon = stocker_pokemon(id, level, shiny)
-```
-
-Les paramètres sont les même que pour ajouter\_pokemon.
-
diff --git a/src/content/pages/help/event-making-in-rmxp/give-an-item_en.mdoc b/src/content/pages/help/event-making-in-rmxp/give-an-item_en.mdoc
deleted file mode 100644
index 723fa04..0000000
--- a/src/content/pages/help/event-making-in-rmxp/give-an-item_en.mdoc
+++ /dev/null
@@ -1,153 +0,0 @@
----
-title: Give an item
-seoDescription: How to give an item to the player in RMXP for Pokémon SDK
-publishDate: '2022-09-02 18:25:00'
-order: 0
----
-
-## Give an item from an event
-
-### Command
-
-To give an item from an event you can use the following command :
-
-```ruby
-add_item(id, no_delete)
-```
-
-Parameters are:
-
-- `id`: ID of the item (# field or db\_symbol field in [List of Items](https://psdk.pokemonworkshop.com/db/db_item.html)).
-- `no_delete`: If the event shouldn't be permanently deleted. (Deleted by default).
-
-Hovewer, there are also more specific commands for some actions :
-
-
-
-To pick items from the ground :
-
-```ruby
-pick_item(item_id, count, no_delete)
-```
-
-Parameters are:
-
-- `item_id`: ID of the item (# field or db\_symbol field in [List of items](https://psdk.pokemonworkshop.com/db/db_item.html))
-- `count`: the item amount (optional, 1 by default)
-- `no_delete`: If the event shouldn't be permanently deleted. (Deleted by default).
-
-To give an item thanks to a NPC :
-
-```ruby
-give_item(item_id, count)
-```
-
-Parameters are:
-
-- `item_id`: ID of the item (# field or db\_symbol field in [List of items](https://psdk.pokemonworkshop.com/db/db_item.html))
-- `count`: the item amount (optional, 1 by default)
-
-### Examples
-
-Item on the ground giving a Potion:
-
-```ruby
-pick_item(:potion)
-```
-
-or
-
-```ruby
-pick_item(17)
-```
-
-NPC giving a TM (and that should not be removed):
-
-```ruby
-give_item(:tm01, true)
-```
-
-or
-
-```ruby
-give_item(328, true)
-```
-
-## Silently give an item
-
-### Command
-
-You can add an item to the bag without notification using the following command:
-
-```ruby
-$bag.add_item(id, quantity)
-```
-
-The parameters are :
-
-- `id`: ID of the item (# field or db\_symbol field in [List of Items](https://psdk.pokemonworkshop.com/db/db_item.html)).
-- `quantity`: Number of items to add.
-
-### Examples
-
-Add 5 potions:
-
-```ruby
-$bag.add_item(:potion, 5)
-```
-
-or
-
-```ruby
-$bag.add_item(17, 5)
-```
-
-## Drop an item from the bag
-
-### Command
-
-To drop an item, use the following command:
-
-```ruby
-$bag.drop_item(id, quantity)
-```
-
-Parameters are:
-
-- `id`: ID of the item (# field or db\_symbol field in [List of items](https://psdk.pokemonworkshop.com/db/db_item.html)).
-- `quantity`: Number of items to drop.
-
-### Examples
-
-Drop a potion :
-
-```ruby
-$bag.drop_item(:potion, 1)
-```
-
-or
-
-```ruby
-$bag.drop_item(17, 1)
-```
-
-## To Know if the Player has an item
-
-To know if the Player has a particular item in his bag, use the Command:
-
-```ruby
-$bag.has_item?(id)
-```
-
-The `id` parameter is the item ID which should be in the bag.
-
-## Check if the player has an item
-
-To check if the player has an item in the bag, you can use the command:
-
-```ruby
-quantite = $bag.item_quantity(id)
-```
-
-The parameter `id` is the ID of the item.
-
diff --git a/src/content/pages/help/event-making-in-rmxp/give-an-item_fr.mdoc b/src/content/pages/help/event-making-in-rmxp/give-an-item_fr.mdoc
deleted file mode 100644
index f69449c..0000000
--- a/src/content/pages/help/event-making-in-rmxp/give-an-item_fr.mdoc
+++ /dev/null
@@ -1,152 +0,0 @@
----
-title: Donner un objet
-seoDescription: Comment donner un objet au joueur dans RMXP pour Pokémon SDK
-order: 0
----
-
-## Donner un objet depuis un évènement
-
-### Commandes
-
-Pour donner un objet depuis un évènement vous pouvez utiliser la commande générale:
-
-```ruby
-add_item(id, no_delete)
-```
-
-Les paramètres sont :
-
-- `id`: ID de l'objet (champ # ou db\_symbol de [Liste des objets](https://psdk.pokemonworkshop.com/db/db_item.html)).
-- `no_delete`: Indique si l'évènement doit être supprimé définitivement ou non (par défaut l'évènement est supprimé).
-
-Cependant, il existe également des commandes plus spécifiques à certains types d'actions :
-
-
-
-Pour ramasser des objets au sol :
-
-```ruby
-pick_item(item_id, count, no_delete)
-```
-
-Les paramètres sont :
-
-- `item_id`: ID de l'objet (champ # ou db\_symbol de [Liste des objets](https://psdk.pokemonworkshop.com/db/db_item.html))
-- `count`: le nombre d'objets (optionnel, par défaut à 1)
-- `no_delete`: Indique si l'évènement doit être supprimé définitivement ou non (par défaut il sera supprimé).
-
-Pour donner un objet via un PNJ :
-
-```ruby
-give_item(item_id, count)
-```
-
-Les paramètres sont :
-
-- `item_id`: ID de l'objet (champ # ou db\_symbol de [Liste des objets](https://psdk.pokemonworkshop.com/db/db_item.html))
-- `count`: le nombre d'objet (optionnel, par défaut à 1)
-
-### Exemples
-
-Objet au sol qui donne une potion :
-
-```ruby
-pick_item(:potion)
-```
-
-ou
-
-```ruby
-pick_item(17)
-```
-
-Personnage qui donne une CT : (Qui ne doit donc pas être supprimé)
-
-```ruby
-give_item(:tm01, true)
-```
-
-ou
-
-```ruby
-give_item(328, true)
-```
-
-## Ajouter un objet de manière silencieuse
-
-### Commande
-
-Il est possible d'ajouter un objet dans le sac de manière silencieuse :
-
-```ruby
-$bag.add_item(id, quantity)
-```
-
-Les paramètres sont :
-
-- `id`: ID de l'objet (champ # ou db\_symbol de [Liste des objets](https://psdk.pokemonworkshop.com/db/db_item.html)).
-- `quantity`: Le nombre d'objets à donner.
-
-### Exemples
-
-Ajouter 5 potions :
-
-```ruby
-$bag.add_item(:potion, 5)
-```
-
-ou
-
-```ruby
-$bag.add_item(17, 5)
-```
-
-## Retirer un objet
-
-### Commande
-
-Pour retirer un objet, il suffit d'utiliser la commande :
-
-```ruby
-$bag.drop_item(id, quantity)
-```
-
-Les paramètres sont :
-
-- `id`: ID de l'objet (champ # ou db\_symbol de [Liste des objets](https://psdk.pokemonworkshop.com/db/db_item.html)).
-- `quantity`: Le nombre d'objets à retirer.
-
-### Exemples
-
-Retirer une potion :
-
-```ruby
-$bag.drop_item(:potion, 1)
-```
-
-ou
-
-```ruby
-$bag.drop_item(17, 1)
-```
-
-## Savoir si le joueur possède un objet
-
-Pour savoir si le joueur possède un objet en particulier dans son sac, utilisez la commande :
-
-```ruby
-$bag.has_item?(id)
-```
-
-Le paramètre `id` est l'ID de l'objet qui doit être présent dans le sac.
-
-## Connaitre la quantité d'un objet que le joueur possède
-
-Pour connaître la quantité exacte d'un objet dans le sac utilisez la commande suivante :
-
-```ruby
-quantite = $bag.item_quantity(id)
-```
-
-Le paramètre `id` est l'ID de l'objet dont vous voulez connaître la quantité.
-
diff --git a/src/content/pages/help/event-making-in-rmxp/how-to-use-the-followme-system_en.mdoc b/src/content/pages/help/event-making-in-rmxp/how-to-use-the-followme-system_en.mdoc
deleted file mode 100644
index 31687aa..0000000
--- a/src/content/pages/help/event-making-in-rmxp/how-to-use-the-followme-system_en.mdoc
+++ /dev/null
@@ -1,87 +0,0 @@
----
-title: How to use the FollowMe system
-seoDescription: All the possibilities of the most powerfull FollowMe system in RPG
- Maker XP
-publishDate: '2022-09-02 19:10:00'
-order: 0
----
-
-Since 2014 PSDK has a really interesting Following System! This system allows the player to be followed by :
-
-- Its Pokémon
-- Its friends (Heroes in the RMXP data base from 2 upto infinity)
-- Its friend's Pokémon (`$storage.other_party`)
-
-It's allso possible to make an event following another event.
-
-## Management of the Following System
-
-### Activation / Deactivation.
-
-To activate the following system, switch the switch `19` " **FollowMe Actif**" on. To disable it just switch off the same switch.
-
-### Temporary deactivation
-
-If for any reason (like surf) you need to temporarilly disable the Following System, just write this in the events :
-
-- deactivation :`Yuki::FollowMe.smart_disable`
-- re-activation :`Yuki::FollowMe.smart_enable`(won't enable the system if it was disabled before`smart_disable`).
-
-Note : If you don't want the following System to re-enable when the player is on by, use this :
-
-```ruby
-Yuki::FollowMe.smart_enable unless $game_switches[::Yuki::Sw::EV_Bicycle] || $game_switches[::Yuki::Sw::EV_AccroBike]
-```
-
-### Define the number of Trainer's following Pokemon
-
-To define the number of your Pokémon who'll be following you, set the right value in the variable `19` " **Nb Pokémon Suiveurs**". 0 = no Pokémon, 1 = the first, 2 = the first & the second etc...
-
-### Define the number of friend who's following you
-
-The variable `18` " **Nb Humain Suiveurs**" define the number of friend (Heroes from RMXP database starting from 2) who's following you.
-
-### Define the number of your Friend's Pokémon following you
-
-Use the variable `20` " **Nb Pkm Ami Suiveurs**". It works like the variable `19`.
-
-## Move a follower
-
-If for any reason you need to move a follower, change the variable `21` " **Follower Selectionné**" and move the player (the selected follower will be the first if variable 21 is equal to 1, the second if 2 etc...)
-
-## Change the Z property of the player an its followers
-
-To prevent graphic glitches with the bridges, it's recommanded to hide the `z` property change (4 \<-\> 0) in a event in strairs using this command :
-
-```ruby
-$game_player.change_z_with_follower(z)
-```
-
-It's recommanded to replace `z` by 4 when you need the player to cross a bridge. And set `z` to 0 if you want him to get back to the regular layer.
-
-## Use the FollowMe on events
-
-All [`Game_Character`](https://psdk.pokemonworkshop.fr/yard/Game_Character.html) objects can follow other [`Game_Character`](https://psdk.pokemonworkshop.fr/yard/Game_Character.html) objects. Call the `set_follower` of the followed event to make another event follow it.
-
-
-
-Example, Event 001 following Event 002 :
-
-```ruby
-get_character(2).set_follower(get_character(1))
-```
-
-Example, Event 005 following the player (player's Pokémon will follow the event) :
-
-```ruby
-$game_player.set_follower(get_character(5))
-```
-
-## Unlink event
-
-To make event stops following the player, use the following command:
-
-```ruby
-$game_player.reset_follower
-```
-
diff --git a/src/content/pages/help/event-making-in-rmxp/how-to-use-the-followme-system_fr.mdoc b/src/content/pages/help/event-making-in-rmxp/how-to-use-the-followme-system_fr.mdoc
deleted file mode 100644
index 5cfd4f1..0000000
--- a/src/content/pages/help/event-making-in-rmxp/how-to-use-the-followme-system_fr.mdoc
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: Utiliser le FollowMe
-seoDescription: Toute les possibilités du système de FollowMe dans PokémonSDK
-order: 0
----
-
-PSDK intègre un système de FollowMe relativement pratique depuis 2014! Ce système vous permet de faire suivre le héros par :
-
-- Ses Pokémon
-- Ses amis (Héros de 2 à l'infini dans l'onglet Héros de RMXP)
-- Les Pokémon de l'un de ses amis (`$storage.other_party`)
-
-Il est également possible que des évènements suivent le héros dans une certaine mesure. Et il est également possible que des évènements se suivent entre eux.
-
-## Gestion du système
-
-### Activation / Désactivation
-
-Pour activer le FollowMe activez l'interrupteur `19` " **FollowMe Actif**". Pour le désactiver, désactivez ce même interrupteur.
-
-### Désactivation temporaire
-
-Si pour des raisons d'animation vous avez besoin de désactiver temporairement le FollowMe et de le remettre dans son état d'activation précédent (qu'il reste désactivé s'il était désactivé) vous devez utiliser les commandes suivantes :
-
-- désactivation :`Yuki::FollowMe.smart_disable`
-- re-activation supposée :`Yuki::FollowMe.smart_enable`
-
-Ceci est utilisé pour Surf par exemple.
-
-
-
-Note : Si vous voulez éviter la réactivation lorsque le joueur est à vélo, utilisez plutôt la commande suivante :
-
-```ruby
-Yuki::FollowMe.smart_enable unless $game_switches[::Yuki::Sw::EV_Bicycle] || $game_switches[::Yuki::Sw::EV_AccroBike]
-```
-
-### Définir le nombre de Pokémon qui vous suivent.
-
-Pour définir le nombre de Pokémon qui vous suivent, modifiez la variable `19` " **Nb Pokémon Suiveurs**". Si elle vaut 0 aucun ne vous suit, si elle vaut 1, le premier Pokémon de l'équipe vous suivent, si elle vaut 2 les deux premiers Pokémon de l'équipe vous suit, etc...
-
-### Définir le nombre d'amis qui vous suivent.
-
-Dans le même ordre d'idée que la section précédente, il faut modifier la variable `18` " **Nb Humain Suiveurs**". Si elle vaut 0 aucun amis vous suit, si elle vaut 1, le héros 2 vous suit, si elle vaut 2, le héros 2 et 3 vous suit etc...
-
-### Définir le nombre de Pokémon amis qui vous suit.
-
-Dans le même ordre d'idée que pour vos Pokémon, vous devez modifier la variable `20` " **Nb Pkm Ami Suiveurs**". Le fonctionnement est similaire.
-
-## Déplacer un follower
-
-Pour des raisons de scénarisation, il est possible de déplacer les Follower. Pour ça modifiez la valeur de la variable `21` " **Follower Selectionné**" et déplacez le héros (ça déplacera le follower n° variable 21).
-
-## Modifier la propriété Z du joueur avec ses follower
-
-Pour que les glitches graphiques avec les ponts soient minimaux, il est conseillé d'affecter la propriété z du héros et de ses follower au travers d'un évènement caché dans un escalier. Pour faire ceci utilisez la commande :
-
-```ruby
-$game_player.change_z_with_follower(z)
-```
-
-Il est conseillé de remplacer `z` par 4 quand vous voullez que le héros puisse être au dessus du pont. Et remplacez `z` par 0 si vous voulez le faire revenir sur la couche normale.
-
-## Utiliser le FollowMe sur des évènements
-
-Tous les objets de type [`Game_Character`](https://psdk.pokemonworkshop.fr/yard/Game_Character.html) peuvent suivre d'autres objet de type [`Game_Character`](https://psdk.pokemonworkshop.fr/yard/Game_Character.html). Pour que l'un suive l'autre, il suffit d'appeler la méthode `set_follower` de l'autre avec pour paramètre l'un.
-
-
-
-Par exemple, pour que l'évènement d'id 001 suive l'évènement d'id 002 :
-
-```ruby
-get_character(2).set_follower(get_character(1))
-```
-
-Pour que l'évènement d'id 005 suive le héros (il se placera avant le Pokémon) :
-
-```ruby
-$game_player.set_follower(get_character(5))
-```
-
-## Délier le héros des évènements qui le suit
-
-Pour que les évènements arrêtent de suivre le héros, exécutez la commande suivante :
-
-```ruby
-$game_player.reset_follower
-```
-
diff --git a/src/content/pages/help/event-making-in-rmxp/release-a-roaming-pokemon_en.mdoc b/src/content/pages/help/event-making-in-rmxp/release-a-roaming-pokemon_en.mdoc
deleted file mode 100644
index 1b73967..0000000
--- a/src/content/pages/help/event-making-in-rmxp/release-a-roaming-pokemon_en.mdoc
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: Release a roaming Pokémon
-seoDescription: How to release a roaming Pokémon
-publishDate: '2022-09-02 19:05:00'
-order: 0
----
-
-PSDK has a system allowing to encounter roaming Pokémon, this system relies on a `proc` that gives the information to where the Pokémon should be each time it's called.
-
-## Define the roaming Pokémon proc
-
-All the roaming Pokémon proc are stored inside `PFM::Wild_RoamingInfo::RoamingProcs`. This constant is an Array associating a `proc_id` (Integer) to a `Proc`.
-
-Definition of a new proc needs to be added as a custom script in the /scripts folder.
-
-Here's an example :
-
-```ruby
-PFM::Wild_RoamingInfo::RoamingProcs[proc_id] = proc do |infos|
- # The Pokemon will be in Grass
- infos.zone_type = 1
- # With terrain tag 0 (RMXP tileset)
- infos.tag = 0
- # We assign a random map
- maps = [25, 46, 35, 27]
- if (infos.map_id == $game_map.map_id && infos.spotted) || infos.map_id == -1
- infos.map_id = (maps - [infos.map_id]).sample
- infos.spotted = false
- end
-end
-```
-
-The condition in this proc is split in two parts :
-
-- `infos.map_id == -1`That allows to assign a map\_id if no map\_id is assigned.
-- `infos.map_id == $game_map.map_id && infos.spotted`that allows the roaming Pokémon to change map if it has been encountered in the map where the player is.
-
-This condition can be customized, for example :
-
-```ruby
-if infos.map_id != $game_map.map_id || infos.spotted || infos.map_id == -1
- infos.map_id = (maps - [infos.map_id]).sample
- infos.spotted = false
-end
-```
-
-Will allow the roaming Pokémon to change map if the player isn't in the same map or if it has been encountered.
-
-## Release a roaming Pokémon
-
-Write the following command in an event to release a roaming Pokémon :
-
-```ruby
-$wild_battle.add_roaming_pokemon(chance, proc_id, pokemon_hash)
-```
-
-The paramaters are :
-
-- `chance`luck to encounter denominator (2 = 1/2, 4 = 1/4 etc...)
-- `proc_id`ID of the proc used to assign the roaming Pokémon location (same number as above).
-- `pokemon_hash`is the same parameter sent to[`PFM::Pokemon.generate_from_hash`](https://psdk.pokemonworkshop.fr/yard/PFM/Pokemon.html#generate_from_hash-class_method)
-
-Example :
-
-```ruby
-$wild_battle.add_roaming_pokemon(5, 0, id: 151, level: 20)
-```
-
-This command release a level `20` Mew with one out of `5` chance to encounter it in the map defined by the proc `0`.
-
diff --git a/src/content/pages/help/event-making-in-rmxp/release-a-roaming-pokemon_fr.mdoc b/src/content/pages/help/event-making-in-rmxp/release-a-roaming-pokemon_fr.mdoc
deleted file mode 100644
index 2ab232e..0000000
--- a/src/content/pages/help/event-making-in-rmxp/release-a-roaming-pokemon_fr.mdoc
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: Lâcher un Pokémon errant
-seoDescription: Comment lâcher un Pokémon errant
-order: 0
----
-
-PSDK intègre un système permettant d'avoir des Pokémon fuyards. Ce système utilise un `Proc` pour savoir si le Pokémon se trouve dans la map dans laquelle le héros est tout juste rentré.
-
-## Définir le Proc de présence du Pokémon fuyard
-
-Chacun des Proc de présence du Pokémon fuyard sont stockés dans `PFM::Wild_RoamingInfo::RoamingProcs`. Cette constante est un tableau qui associe `proc_id` (un nombre entier) à un Proc.
-
-La définition d'un nouveau Proc doit être ajoutée en tant que custom script dans le dossier /scripts.
-
-Voici un example de définition :
-
-```ruby
-PFM::Wild_RoamingInfo::RoamingProcs[proc_id] = proc do |infos|
- # Pokémon défini pour les hautes herbes
- infos.zone_type = 1
- # Avec le terrain tag 0 (tileset RMXP)
- infos.tag = 0
- # On assigne une nouvelle map aléatoirement
- maps = [25, 46, 35, 27]
- if (infos.map_id == $game_map.map_id && infos.spotted) || infos.map_id == -1
- infos.map_id = (maps - [infos.map_id]).sample
- infos.spotted = false
- end
-end
-```
-
-La condition est découpée en deux parties :
-
-- `infos.map_id == -1`qui permet de forcer l'assignement d'une map au fuyard s'il n'en a pas
-- `infos.map_id == $game_map.map_id && infos.spotted`qui permet au fuyard de changer de map uniquement s'il a été vu sur la map où le joueur de trouve.
-
-Cette condition peut être customisée, par exemple :
-
-```ruby
-if infos.map_id != $game_map.map_id || infos.spotted || infos.map_id == -1
- infos.map_id = (maps - [infos.map_id]).sample
- infos.spotted = false
-end
-```
-
-Fera changer le fuyard de map s'il n'est pas sur la map où je joueur se trouve ou s'il a été vu par le joueur. (Bien entendu il changera également de map s'il n'a pas de map assigné).
-
-## Lâcher le Pokémon Fuyard
-
-Dans une évènement vous entrerez la commande suivante pour lâcher le Pokémon Fuyard :
-
-```ruby
-$wild_battle.add_roaming_pokemon(chance, proc_id, pokemon_hash)
-```
-
-Les paramètres de cette commande sont :
-
-- `chance`le dénominateur de chance (par exemple 2 équivaut à une chance sur deux de le rencontrer en marchant dans le tile approprié).
-- `proc_id`l'id du proc qui défini la map dans laquelle le Pokémon se trouve (même nombre que plus haut)
-- `pokemon_hash`est le même paramètre qu'envoyé à[`PFM::Pokemon.generate_from_hash`](https://psdk.pokemonworkshop.fr/yard/PFM/Pokemon.html#generate_from_hash-class_method)
-
-Exemple :
-
-```ruby
-$wild_battle.add_roaming_pokemon(5, 0, id: 151, level: 20)
-```
-
-Cette commande relâche un Mew niveau `20` avec une chance sur `5` de rencontrer le Pokémon dans les hautes herbes selon le proc\_id `0`.
-
diff --git a/src/content/pages/help/event-making-in-rmxp/start-a-wild-battle_en.mdoc b/src/content/pages/help/event-making-in-rmxp/start-a-wild-battle_en.mdoc
deleted file mode 100644
index 920bbcb..0000000
--- a/src/content/pages/help/event-making-in-rmxp/start-a-wild-battle_en.mdoc
+++ /dev/null
@@ -1,78 +0,0 @@
----
-title: Start a wild battle
-seoDescription: How to create a wild battle from events in RPG Maker XP
-publishDate: '2022-09-02 19:00:00'
-order: 0
----
-
-## Start a simple wild battle
-
-To start a wild battle, just call the command : `call_battle_wild(id_pokemon, level)`
-
-
-
-Example :
-
-```ruby
-call_battle_wild(:pikachu, 5)
-```
-
-(Use the [List of Pokémon](https://psdk.pokemonworkshop.com/db/db_pokemon.html) to find the correct Pokémon ID)
-
-## Start double wild battle
-
-It's possible to start a 2v2 wild battle using the following command : `call_battle_wild(id_pokemon1, level1, id_pokemon2, level2)`
-
-
-
-Example :
-
-```ruby
-call_battle_wild(:pikachu, 5, :meowth, 5)
-```
-
-## Start a wild battle against a specific Pokémon
-
-You can generate a Pokemon using the following command :
-
-```ruby
-pokemon = PFM::Pokemon.generate_from_hash(id: id_pokemon, level: level_pokemon)
-```
-
-The various parameter of the command (aside id & level) are :
-
-- `item`: Numerical ID of the item the Pokémon should hold
-- `stats`: IV array [hp, atk, dfe, spd, ats, dfs]
-- `moves`: List of Numerical Move ID the Pokémon should know (0 = default)
-- `gender`: Gender of the Pokémon (0 = none, 1 = male, 2 = female)
-- `shiny`: If the Pokémon IS shiny
-- `no_shiny`: If the Pokémon cannot be shiny
-- `form`: Numerical form of the Pokémon (ex: unknown C is 2, alolan meowth is 1)
-- `rareness`: Numerical catch rate (0 = uncatchable, even with the Master Ball)
-- `trainer_name`: Original Trainer name
-- `trainer_id`: Original Trainer ID
-- `given_name`: Pokémon's nick name
-- `loyalty`: Pokémon's happyness
-- `ball`: Numerical ID of the ball used to catch the Pokémon
-- `bonus`: EV array [hp, atk, dfe, spd, ats, dfs]
-- `nature`: Numerical ID of the Pokémon's nature.
-
-Use case :
-
-
-
-1v1 against Cosplayer Pikachu :
-
-```ruby
-pokemon = PFM::Pokemon.generate_from_hash(id: 25, level: 5, form: 2, gender: 2)
-call_battle_wild(pokemon, nil)
-```
-
-2v2 against two Cosplayer Pikachu :
-
-```ruby
-pokemon1 = PFM::Pokemon.generate_from_hash(id: 25, level: 5, form: 2, gender: 2)
-pokemon2 = PFM::Pokemon.generate_from_hash(id: 25, level: 5, form: 5, gender: 2)
-call_battle_wild(pokemon1, nil, pokemon2)
-```
-
diff --git a/src/content/pages/help/event-making-in-rmxp/start-a-wild-battle_fr.mdoc b/src/content/pages/help/event-making-in-rmxp/start-a-wild-battle_fr.mdoc
deleted file mode 100644
index bd36ecc..0000000
--- a/src/content/pages/help/event-making-in-rmxp/start-a-wild-battle_fr.mdoc
+++ /dev/null
@@ -1,78 +0,0 @@
----
-title: Démarrer un combat de Pokémon
-seoDescription: Comment créer des combats de Pokémon Sauvage en évent dans RPG Maker
- XP
-order: 0
----
-
-## Démarrer un combat simple contre un Pokémon sauvage
-
-Pour démarrer un combat simple contre un Pokémon sauvage, il vous suffit d'exécuter la commande `call_battle_wild(id_pokemon, level)`
-
-
-
-Exemple :
-
-```ruby
-call_battle_wild(:pikachu, 5)
-```
-
-(référez vous à la [Liste des Pokémon](https://psdk.pokemonworkshop.com/db/db_pokemon.html) pour les ID de Pokémon)
-
-## Démarrer un combat contre plusieurs Pokémon sauvages
-
-Il est possible de déclencher un combat double contre des sauvages, il suffit d'utiliser la commande suivante : `call_battle_wild(id_pokemon1, level1, id_pokemon2, level2)`
-
-
-
-Exemple :
-
-```ruby
-call_battle_wild(:pikachu, 5, :meowth, 5)
-```
-
-## Démarrer un combat contre un Pokémon paramétré
-
-Vous pouvez générer les Pokémon avant de lancer le combat en utilisant la commande :
-
-```ruby
-pokemon = PFM::Pokemon.generate_from_hash(id: id_pokemon, level: level_pokemon)
-```
-
-Les divers paramètres de cette commande (en dehors de id et level) sont :
-
-- `item`: ID numérique de l'objet porté
-- `stats`: Tableaux des IV [hp, atk, dfe, spd, ats, dfs]
-- `moves`: Tableaux des ID attaques (numériques)
-- `gender`: Sexe du Pokémon (0 = asexué, 1 = mâle, 2 = femelle)
-- `shiny`: Si le Pokémon est forcément shiny
-- `no_shiny`: Si le Pokémon ne peut absolument pas être shiny
-- `form`: Numéro de la forme du Pokémon
-- `rareness`: Taux de capture du Pokémon (numérique)
-- `trainer_name`: Nom du dresseur d'origine du Pokémon
-- `trainer_id`: ID secret du dresseur d'origine du Pokémon
-- `given_name`: Surnom du Pokémon
-- `loyalty`: Bonheur du Pokémon
-- `ball`: ID de la balle utilisée pour capturer le Pokémon
-- `bonus`: EV du Pokémon [hp, atk, dfe, spd, ats, dfs]
-- `nature`: Nature du Pokémon
-
-Exemple d'utilisation :
-
-
-
-1v1 contre un Pikachu cosplayer :
-
-```ruby
-pokemon = PFM::Pokemon.generate_from_hash(id: 25, level: 5, form: 2, gender: 2)
-call_battle_wild(pokemon, nil)
-```
-
-2v2 contre deux Pikachu cosplayer :
-
-```ruby
-pokemon1 = PFM::Pokemon.generate_from_hash(id: 25, level: 5, form: 2, gender: 2)
-pokemon2 = PFM::Pokemon.generate_from_hash(id: 25, level: 5, form: 5, gender: 2)
-call_battle_wild(pokemon1, nil, pokemon2)
-```
-
diff --git a/src/content/pages/help/pokemon-sdk/comment-empecher-la-selection-d-une-attaque_en.mdoc b/src/content/pages/help/pokemon-sdk/comment-empecher-la-selection-d-une-attaque_en.mdoc
deleted file mode 100644
index ae04691..0000000
--- a/src/content/pages/help/pokemon-sdk/comment-empecher-la-selection-d-une-attaque_en.mdoc
+++ /dev/null
@@ -1,68 +0,0 @@
----
-title: How to prevent selecting a move?
-seoDescription: A quick tutorial explaining how to prevent selecting a move with Pokémon
- SDK
-publishDate: '2024-02-15 20:34:00'
-order: 0
----
-
-## What are the ways to prevent the selection of a move?
-
-Selecting a move is a process stemming from your choice of action at the beginning of the turn. If there is a reason why the move cannot be selected, then the functions related to blocking must return a `proc` instead of `nil`, and within this `proc`, indicate the reason for the blockage with a message.
-
-### From the code of the move itself
-
-Some moves cannot be selected because of how they work. For example, it is not possible to select **Stuff Cheeks** if the user does not have a berry. To do this, there is a method in the move: `disable_reason` which must return a `proc` if the user is not holding a berry.
-
-#### Example with "Stuff Cheeks"
-
-
-
-Note: If you wish to learn more about `disable_reason`, please go to the section [Understanding the disable\_reason](#heading_function-disable-reason "Understanding the disable\_reason") function at the end of the article.
-
-### From the code of an effect
-
-Effects expose a function that allows returning a proc when `disable_reason` is invoked. This method is called `on_move_disabled_check`. The operation is similar to `disable_reason`, if you return a proc, then the move cannot be selected. This is useful for creating effects (ability, item, effects of move etc.) that prevent a Pokemon from being able to select a move.
-
-#### Example with the effect of the move "Throat Chop"
-
-
-
-## Understanding the disable_reason function {% id="function-disable-reason" %}
-
-
-
-What particularly interests us in this function:
-
-- `exec_hooks(Move, :move_disabled_check, binding)`
-
-`exec_hooks`: This is a method that is called to execute a series of **Hooks**. **Hooks** are functions or procedures that are triggered in response to certain events or conditions in the program. They allow modifying the standard behavior of a function or adding additional functionalities without changing the original code of the function.
-
-`Move`: This first argument specifies the context or scope of application of the **Hooks** to be executed. Here, **Move** indicates that the **Hooks** pertain to Pokémon abilities. **Move** represents the class that groups together the **Hooks** related to abilities.
-
-`:move_disabled_check`: The second argument is a symbol that specifically identifies the **Hooks** to be executed. In this case, `:move_disabled_check` refers to a set of **Hooks** designed to check if the Pokémon user can select a certain move. These **Hooks** can include checks for conditions such as field effects, abilities, items, etc., that might prevent the move selection. (examples: the effect of Gravity, Gorilla Tactics, Choice Scarf)
-
-`binding`: The third argument, **binding** , is a bit more complex. In Ruby, a **binding** is an object that encapsulates the execution context of a piece of code, including local variables, available methods, the value of **self** , etc. Passing **binding** to `exec_hooks` thus allows the **Hooks** to access the context in which `exec_hooks` was called. This means they can read and modify local variables, call methods, and so on, as if they were part of the original code of the method `move_disabled_check`.
-
-### Understanding the procedure of the function disable_reason
-
-**Hook Call**
-
-When `exec_hooks(Move, :move_disabled_check, binding)` is executed, it searches for and executes all the **Hooks** associated with the event or condition `:move_disabled_check` in the context of abilities ( **Move** ).
-
-**Management of the value returned by the Hook**
-
-If none of the executed **Hooks** raises a `Hooks::ForceReturn` exception, the function `move_disabled_check` continues its execution normally and reaches the `return nil` at the end, indicating that the move is selected.
-
-However, if a **Hook** decides that the move should not be used and returns a proc (either directly or via an exception such as `Hooks::ForceReturn` with `e.data` containing the `proc`), the execution flow of `move_disabled_check` is interrupted, and it returns the `proc` to its caller.
-
-**Consequences of returning the proc**
-
-The return of the `proc` means that something has prevented the selection of the move. This could be due to various game-specific reasons, such as field effects, abilities, items, etc...
-
-The calling function or method that invoked `move_disabled_check` must then handle this proc to decide on the subsequent actions. For example, this may result in displaying a message to the user indicating that the move cannot be selected.
-
-**Necessity of another function**
-
-This function and its associated **Hook** are used to prevent the execution of an move. However, it is possible that some effects, such as **Metronome** , bypass this function. Therefore, it is essential to manage this situation in a `move_usable_by_user` or its associated **Hook** , especially when intervening in an effect, as illustrated in the previous examples.
-
diff --git a/src/content/pages/help/pokemon-sdk/comment-empecher-la-selection-d-une-attaque_fr.mdoc b/src/content/pages/help/pokemon-sdk/comment-empecher-la-selection-d-une-attaque_fr.mdoc
deleted file mode 100644
index 29ade5f..0000000
--- a/src/content/pages/help/pokemon-sdk/comment-empecher-la-selection-d-une-attaque_fr.mdoc
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: Comment empêcher la sélection d'une attaque ?
-seoDescription: Un tutoriel rapide expliquant comment empêcher la sélection d'une
- attaque avec Pokémon SDK
-order: 0
----
-
-## Quelles sont les façons d'empêcher la sélection d'une attaque ?
-
-La sélection d'une attaque est un processus découlant de votre choix d'action au début du tour. Si il existe une raison pour laquelle l'attaque ne peut être sélectionnée, alors les fonctions relatives au blocage doivent retourner un `proc` au lieu de `nil` et dans ce `proc` indiquer la raison du blocage avec un message.
-
-### Depuis le code de l'attaque en lui-même
-
-Certaines attaques ne peuvent pas être sélectionnées à cause de leur fonctionnement. Par exemple, il n'est pas possible de sélectionner **Garde-à-Joues** si l'utilisateur ne possède pas une baie. Pour ce faire, il existe une méthode dans les attaques : `disable_reason` qui devra retourner un `proc` si l'utilisateur ne tient pas de baie.
-
-#### Exemple avec "Gardes-à-Joues"
-
-
-
-Note : Si vous souhaitez en apprendre plus sur `disable_reason`, rendez vous dans la section [Comprendre la fonction disable\_reason](#heading_function-disable-reason "Comprendre la fonction disable\_reason") à la fin de l'article.
-
-### Depuis le code d'un effet
-
-Les effets exposent une fonction permettant de renvoyer un `proc` lorsque `disable_reason` est invoqué. Cette méthode se nomme `on_move_disabled_check`. Le fonctionnement est similaire à `disable_reason`, si vous retournez un `proc`, alors l'attaque ne peut pas être sélectionnée. Ceci est pratique pour créer des effets (talent, objet, météos, terrains, etc...) qui permettent à un Pokémon de ne pas pouvoir sélectionner une capacité.
-
-#### Exemple avec l'effet de l'attaque "Éxécu-Son"
-
-
-
-## Comprendre la fonction disable_reason {% id="function-disable-reason" %}
-
-
-
-Ce qui nous intéresse particulièrement dans cette fonction :
-
-- `exec_hooks(Move, :move_disabled_check, binding)`
-
-`exec_hooks` : C'est une méthode qui est appelée pour exécuter une série de **Hooks**. Les **Hooks** sont des fonctions ou des procédures qui sont déclenchées en réponse à certains événements ou conditions dans le programme. Ils permettent de modifier le comportement standard d'une fonction ou d'ajouter des fonctionnalités supplémentaires sans changer le code original de la fonction.
-
-`Move` : Ce premier argument spécifie le contexte ou le domaine d'application des **Hooks** à exécuter. Ici, **Move** indique que les **Hooks** concernent les capacités des Pokémon. **Move** représente la classe qui regroupe les **Hooks** relatifs aux capacités.
-
-`:move_disabled_check` : Le deuxième argument est un symbole qui identifie spécifiquement les **Hooks** à exécuter. Dans ce cas, `:move_disabled_check` réfère à un ensemble de **Hooks** destinés à vérifier si le Pokémon utilisateur peut sélectionner une certaine capacité. Ces **Hooks** peuvent inclure des vérifications pour des conditions comme les effets de terrain, les talents, les objets, etc., qui pourraient empêcher la sélection de la capacité. (exemples : l'effet de Gravité, Entêtement, Mouchoir Choix)
-
-`binding` : Le troisième argument, **binding** , est un peu plus complexe. En Ruby, un **binding** est un objet qui encapsule le contexte d'exécution d'un bout de code, y compris les variables locales, les méthodes disponibles, la valeur de **self** , etc. Passer **binding** à `exec_hooks` permet donc aux **Hooks** d'accéder au contexte dans lequel `exec_hooks` a été appelé. Cela signifie qu'ils peuvent lire et modifier les variables locales, appeler des méthodes, et ainsi de suite, comme s'ils faisaient partie du code original de la méthode `move_disabled_check`.
-
-### Comprendre la procédure de la fonction disable_reason
-
-**Appel de Hook**
-
-Lorsque `exec_hooks(Move, :move_disabled_check, binding)` est exécuté, il va chercher et exécuter tous les **Hooks** associés à l'événement ou à la condition `:move_disabled_check` dans le contexte des capacités ( **Move** ).
-
-**Gestion de la valeur retournée par le Hook**
-
-Si aucun des **Hooks** exécutés ne lève une exception `Hooks::ForceReturn`, la fonction `move_disabled_check` continue son exécution normalement et atteint le `return nil` à la fin, indiquant que la capacité est sélectionné.
-
-Cependant, si un **Hook** décide que la capacité ne doit pas être utilisée et renvoie un proc (directement ou via une exception comme `Hooks::ForceReturn` avec `e.data` contenant le proc), le flux d'exécution de `move_disabled_check` est interrompu, et il renvoie le proc à son appelant.
-
-**Conséquences du retour du proc**
-
-Le retour du `proc` signifie que quelque chose a empêché la sélection de la capacité. Cela peut être dû à diverses raisons spécifiques au jeu, comme les effets de terrain, les talents, les objets etc...
-
-La fonction ou méthode appelante qui a invoqué `move_disabled_check` doit alors gérer ce `proc` pour décider de la suite des actions. Par exemple, cela peut entraîner l'affichage d'un message à l'utilisateur indiquant que la capacité ne peut pas être sélectionnée.
-
-**Nécéssité d'une autre fonction**
-
-Cette fonction et son **Hook** associé permettent d'empêcher l'exécution d'une attaque. Cependant, il est possible que certains effets, tels que **Métronome** , évitent cette fonction. Il est donc indispensable de gérer cette situation dans un `move_usable_by_user` ou son **Hook** associé, notamment lorsque vous intervenez dans un effet, comme illustré dans les exemples précédents.
-
-### Qu'est-ce qu'un `proc` ?
-
-Un `Proc` en Ruby est un objet encapsulant un bloc de code, qui peut être stocké dans une variable, passé comme argument ou appelé à un moment ultérieur. Cela permet de définir des actions à éxécuter plus tard, facilitant ainsi la gestion des callbacks et des opérations conditionnelles. Les `Procs` sont particulièrement utiles pour organiser et manipuler des blocs de code qui doivent être exécutés de manière répétitive ou en réponse à certaines conditions.
-
-Dans la fonction `disable_reason`, la ligne `return proc {} if pp == 0` utilise un `Proc` pour gérer une condition spécifique : si l'attaque n'a plus de PP (points de pouvoir) et ne peut donc pas être utilisée, elle retourne immédiatement un proc vide. Ce retour signifie que l'attaque est désactivée sans nécessiter d'action immédiate, le proc vide servant de marqueur pour indiquer cette condition spécifique sans effectuer d'opération supplémentaire.
-
diff --git a/src/content/pages/help/pokemon-sdk/comment-faire-un-move-qui-echoue_en.mdoc b/src/content/pages/help/pokemon-sdk/comment-faire-un-move-qui-echoue_en.mdoc
deleted file mode 100644
index 94c32ae..0000000
--- a/src/content/pages/help/pokemon-sdk/comment-faire-un-move-qui-echoue_en.mdoc
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: How to fail a move ?
-seoDescription: Learn how to fail a move with PSDK!
-publishDate: '2024-02-14 19:49:00'
-order: 0
----
-
-## What are the ways to fail a move?
-
-A move failure results from various factors. If a specific reason causes the move to fail, the concerned functions should return false rather than true. Within this returned false, the reason for the failure should be clearly indicated by a message.
-
-### From the code of the move itself
-
-Some moves can fail due to their mechanics. For example, using Gravity in an area already under the effect of Gravity will cause the move to fail. To handle this, there is a method within moves: `move_usable_by_user` which should return false if the terrain is already under the effect of Gravity.
-
-#### Example with "Gravity"
-
-
-
-Note: If you wish to learn more about `move_usable_by_user`, please go to the section [Understanding the move\_usable\_by\_user](#heading_function-move-usable-by-user "Understanding the move\_usable\_by\_user") function at the end of the article.
-
-### From the code of an effect
-
-Effects expose a function that allows returning false when `move_usable_by_user` is invoked. This method is called `on_move_prevention_user`. Its operation is similar to `move_usable_by_user`: if you return false, then the move will fail. This is useful for creating effects (abilities, items, weathers, terrains, etc.) that will cause certain moves to fail.
-
-#### Example with the effect of the move "Throat Chop"
-
-
-
-## Understanding the `move_usable_by_user` {% id="function-move-usable-by-user" %}
-
-
-
-What particularly interests us in this function :
-
-- `exec_hooks(Move, :move_prevention_user, binding)`
-
-`exec_hooks` : This is a method that is called to execute a series of **Hooks**. **Hooks** are functions or procedures that are triggered in response to certain events or conditions in the program. They allow modifying the standard behavior of a function or adding additional functionalities without changing the original code of the function.
-
-`Move` : This first argument specifies the context or scope of application of the **Hooks** to be executed. Here, **Move** indicates that the **Hooks** pertain to Pokémon abilities. **Move** represents the class that groups together the **Hooks** related to abilities.
-
-`:move_prevention_user` : The second argument is a symbol that specifically identifies the **Hooks** to be executed. In this case, `:move_prevention_user` refers to a set of **Hooks** aimed at checking if the user Pokémon can perform a certain move. These **Hooks** can include checks for conditions like status effects, terrain effects, weather conditions, etc., which could cause the move to fail.
-
-`binding` : The third argument, **binding** , is a bit more complex. In Ruby, a **binding** is an object that encapsulates the execution context of a piece of code, including local variables, available methods, the value of **self** , etc. Passing **binding** to `exec_hooks` thus allows the **Hooks** to access the context in which `exec_hooks` was called. This means they can read and modify local variables, call methods, and so on, as if they were part of the original code of the method `move_prevention_user`.
-
-### Understanding the procedure of the function `move_prevention_user`
-
-**Hook Call**
-
-When `exechooks(Move, :move_prevention_user, binding)` is executed, it searches for and executes all the **Hooks** associated with the event or condition `:move_prevention_user` in the context of moves ( **Move** ).
-
-**Management of the value returned by the Hook**
-
-If none of the executed **Hooks** raises a `Hooks::ForceReturn` exception, the function `move_prevention_user` continues its execution normally and reaches the `return true` at the end, indicating that the move will perform.
-
-However, if a **Hook** decides that the move should not be used and returns false (either directly or via an exception such as `Hooks::ForceReturn` with `e.data` containing false), the execution flow of `move_prevention_user` is interrupted, and it returns false to its caller.
-
-**Consequences of returning false**
-
-The return of false means that something has prevented the selection of the move. This could be due to various game-specific reasons, such as field effects, abilities, items, etc...
-
-The calling function or method that invoked `move_prevention_user` must then handle this false to decide on the subsequent actions. For example, this may result in displaying a message to the user indicating that the move failed.
-
diff --git a/src/content/pages/help/pokemon-sdk/comment-faire-un-move-qui-echoue_fr.mdoc b/src/content/pages/help/pokemon-sdk/comment-faire-un-move-qui-echoue_fr.mdoc
deleted file mode 100644
index 4bc433c..0000000
--- a/src/content/pages/help/pokemon-sdk/comment-faire-un-move-qui-echoue_fr.mdoc
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: Comment faire échouer une attaque ?
-seoDescription: Un tutoriel rapide expliquant comment faire échouer une attaque avec
- PSDK !
-order: 0
----
-
-## Quelles sont les façons de faire échouer une attaque ?
-
-Un échec d'attaque résulte de divers facteurs. Si une raison spécifique entraîne l'échec de l'attaque, les fonctions concernées devraient renvoyer false plutôt que true. Au sein de ce false retourné, la raison de l'échec devrait être clairement indiquée par un message.
-
-### Depuis le code de l'attaque en lui-même
-
-Certaines attaques peuvent échouer à cause de leur fonctionnement. Par exemple, utiliser **Gravité** sur un terrain déjà sous **Gravité** provoquera un échec de l'attaque. Pour ce faire, il existe une méthode dans les attaques : `move_usable_by_user` qui devra retourner false si le terrain est déjà sous l'effet de **Gravité**.
-
-#### Exemple avec "Gravité"
-
-
-
-Note : Si vous souhaitez en apprendre plus sur `move_usable_by_user`, rendez vous dans la section [Comprendre la fonction move\_usable\_by\_user](#heading_function-move-usable-by-user "Comprendre la fonction move\_usable\_by\_user") à la fin de l'article.
-
-### Depuis le code d'un effet
-
-Les effets exposent une fonction permettant de renvoyer false lorsque `move_usable_by_user` est invoqué. Cette méthode se nomme `on_move_prevention_user`. Le fonctionnement est similaire à `move_usable_by_user`, si vous retournez false, alors l'attaque sera un échec. Ceci est pratique pour créer des effets (talent, objet, météos, terrains, etc...) qui feront échouer certaines attaques.
-
-#### Exemple avec l'effet de l'attaque "Éxécu-Son"
-
-
-
-## Comprendre la fonction `move_usable_by_user` {% id="function-move-usable-by-user" %}
-
-
-
-Ce qui nous intéresse particulièrement dans cette fonction :
-
-- `exec_hooks(Move, :move_prevention_user, binding)`
-
-`exec_hooks` : C'est une méthode qui est appelée pour exécuter une série de **Hooks**. Les **Hooks** sont des fonctions ou des procédures qui sont déclenchées en réponse à certains événements ou conditions dans le programme. Ils permettent de modifier le comportement standard d'une fonction ou d'ajouter des fonctionnalités supplémentaires sans changer le code original de la fonction.
-
-`Move` : Ce premier argument spécifie le contexte ou le domaine d'application des **Hooks** à exécuter. Ici, **Move** indique que les **Hooks** concernent les capacités des Pokémon. Move représente la classe qui regroupe les **Hooks** relatifs aux capacités.
-
-`:move_prevention_target` : Le deuxième argument est un symbole qui identifie spécifiquement les **Hooks** à exécuter. Dans ce cas, `:move_prevention_user` réfère à un ensemble de **Hooks** destinés à vérifier si le Pokémon utilisateur peut effectuer une certaine capacité. Ces **Hooks** peuvent inclure des vérifications pour des conditions comme les effets de statut, les effets de terrain, les météos, etc., qui pourraient faire échouer l'attaque.
-
-`binding` : Le troisième argument, **binding** , est un peu plus complexe. En Ruby, un **binding** est un objet qui encapsule le contexte d'exécution d'un bout de code, y compris les variables locales, les méthodes disponibles, la valeur de **self** , etc. Passer **binding** à `exec_hooks` permet donc aux **Hooks** d'accéder au contexte dans lequel `exec_hooks` a été appelé. Cela signifie qu'ils peuvent lire et modifier les variables locales, appeler des méthodes, et ainsi de suite, comme s'ils faisaient partie du code original de la méthode `move_usable_by_user`.
-
-### Comprendre la procédure de la fonction `move_usable_by_user`
-
-**Appel de Hook**
-
-Lorsque `exec_hooks(Move, :move_prevention_user, binding)` est exécuté, il va chercher et exécuter tous les Hooks associés à l'événement ou à la condition `:move_prevention_user` dans le contexte des capacités ( **Move** ).
-
-**Gestion de la valeur retournée par le Hook**
-
-Si aucun des Hooks exécutés ne lève une exception `Hooks::ForceReturn`, la fonction `move_usable_by_user` continue son exécution normalement et atteint le `return true` à la fin, indiquant que l'attaque n'échouera pas.
-
-Cependant, si un Hook décide que la capacité doit échouer et renvoie false (directement ou via une exception comme `Hooks::ForceReturn` avec `e.data` égal à false), le flux d'exécution de `move_usable_by_user` est interrompu, et il renvoie false à son appelant.
-
-**Conséquences d'un retour false**
-
-Le retour de false signifie que quelque chose a empêché l'utilisation de l'attaque. Cela peut être dû à diverses raisons spécifiques au jeu, comme des effets de statut, un effet de terrain, des effets de talents, etc.
-
-La fonction ou méthode appelante qui a invoqué `move_usable_by_user` doit alors gérer ce false pour décider de la suite des actions. Par exemple, cela peut entraîner l'affichage d'un message à l'utilisateur indiquant que l'attaque a échoué.
-
diff --git a/src/content/pages/help/pokemon-sdk/custom-environments_en.mdoc b/src/content/pages/help/pokemon-sdk/custom-environments_en.mdoc
deleted file mode 100644
index f113a45..0000000
--- a/src/content/pages/help/pokemon-sdk/custom-environments_en.mdoc
+++ /dev/null
@@ -1,169 +0,0 @@
----
-title: How to create a custom SystemTag?
-seoDescription: A page describing how to create custom SystemTag in PSDK
-tags:
-- PSDK
-publishDate: '2024-09-17 18:44:00'
-order: 0
----
-
-## What is a custom "SystemTag?": {% id="what-is-it" %}
-
-A custom "SystemTag" is a custom tag you can assign to your tiles.
-
-This can do things like:
-
-- Custom functionality _(SystemTags alone_ _can do a lot, as they are used to create wild encounters, slide on ice tiles, stop you from sliding, surf, etc.)_
-- Custom battle backgrounds
-- Custom particle effects
-- Custom wild encounters
-
-## Getting started: {% id="getting-started" %}
-
-To create your custom SystemTag we will be creating 5 new short scripts:
-
-- 00001 GameData\_SystemTags.rb
-- 00002 Environment.rb
-- 00003 Background\_Names.rb
-- 00004 Terrain\_Tags_\__Table.rb
-- 00005 Game\_Character_\__particles.rb - Optional
-
-### Creating our SystemTag's db_symbol {% id="creating+systemtag+db_symbol" %}
-
-#### 00001 GameData_SystemTags.rb:
-
-```ruby
-module GameData
- module SystemTags
- module_function
- # Column 0, row 12 on the SystemTags tileset
- CustomPuddle = gen 0, 12
-
- # Gives the db_symbol of the system tag
- # @param system_tag [Integer]
- # @return [Symbol]
- alias og_system_tag_db_symbol system_tag_db_symbol
- module_function :og_system_tag_db_symbol
- def system_tag_db_symbol(system_tag)
- case system_tag
- when CustomPuddle
- return :custom_puddle
- else
- og_system_tag_db_symbol(system_tag)
- end
- end
- end
-end
-```
-
-- `CustomPuddle = gen 0, 12` - We are creating a new constant that is mapped to the tile in the specified position in our SystemTags tileset.
-- `alias og_system_tag_db_symbol system_tag_db_symbol` - Aliasing the original method. (Futureproofing.)
-- We are returning a new db\_symbol that will be used when the player is standing on the tile. It **must** start with `custom_`, and in this case I used `custom_puddle`. (This is used in Studio when defining your custom zone to groups, as well as when you assign a particle effect to this SystemTag.)
-
-### Creating the zone_type for your SystemTag {% id="creating+zone+types" %}
-
-#### 00002 Environment.rb
-
-```ruby
-module PFM
- class Environment
- def custom_puddle?
- tag = @game_state.game_player.system_tag
- return (tag == CustomPuddle)
- end
-
- alias og_get_zone_type get_zone_type
- def get_zone_type(ice_prio = false)
- if custom_puddle?
- return 11
- end
- og_get_zone_type(ice_prio = false)
- end
-
- alias og_convert_zone_type convert_zone_type
- def convert_zone_type(system_tag)
- case system_tag
- when CustomPuddle
- return 11
- end
- og_convert_zone_type(system_tag)
- end
- end
-end
-```
-
-- We are creating a method that checks if the user is on the new SystemTag we created.
-- We create an alias that will futureproof our method `get_zone_type`
-- We redefine `get_zone_type` and add our method that checks if the user is on the new SystemTag and returns a value. When future SystemTags come out, you will need to update this number.
-- If the user isn't on the new tile, it calls the original `get_zone_type` method.
-- We create an alias that will futureproof our method `convert_zone_type`
-- We redefine `convert_zone_type`, check if the user is on the new SystemTag, return the **same value** that we use in `get_zone_type`. If the user isn't on the new tile, it calls the original `convert_zone_type` method.
-
-### Setting a background for your SystemTag {% id="custom+background" %}
-
-#### 00003 Background_Names.rb
-
-```ruby
-module Battle
- class Logic
- class BattleInfo
- # Name of the background according to their processed zone_type
- BACKGROUND_NAMES.push('sunflower') # 11
- end
- end
-end
-```
-
-- By default, `BACKGROUND_NAMES` will pick an image for your zone. If you ignore this step, it will have a black background when you battle on this tile.
-- We are pushing a new string to an already existing array called `BACKGROUND_NAMES`
-- The string should be an image found in your `graphics/battlebacks` folder
-- The image for the background is decided automatically from the array. This is why your number should be +1 from the previous one.
-
-### Setting your SystemTag to have functionality with LocationBased {% id="locationbased+functionality" %}
-
-#### 00004 Terrain_Tags_Table.rb
-
-```ruby
-class Game_Map
- TERRAIN_TAGS_TABLE[GameData::SystemTags::CustomPuddle] = :shallow_water
-end
-```
-
-- Setting our new SystemTag to use the same terrain tag as `:shallow_water`
-- This is for moves with the `LocationBased` function
-
-### Creating particle effects for your SystemTag (Optional) {% id="custom+particles" %}
-
-#### 00005 Game_Character_particles.rb
-
-```ruby
-class Game_Character
- PARTICLES_METHODS[CustomPuddle] = :particle_push_custom_puddle
-
- # Define the particle_push_custom_puddle method
- def particle_push_custom_puddle
- Yuki::Particles.add_particle(self, :custom_puddle)
- end
-end
-```
-
-- This is specifically for adding a new particle for your new SystemTag we're creating. If you have no interest in adding a particle effect, you can skip this step.
-- `PARTICLES_METHODS[CustomPuddle] = :particle_push_custom_puddle` - We are adding our new constant to the `PARTICLES_METHODS` hash, telling it the method to call when you step on this tile.
-- We are creating the method that we are mapping to the hash. Use the db\_symbol we set in the previous script.
-
-#### Editing your Particles.rb
-
-You define the particle's animation here, in your `Data\Animations\Particles.rb` file. Scroll to the bottom, above `save` and you can define your animation there. There's plenty of examples in this file, but a good thing to know is: you can have a unique particle effect for each TerrainTag on any SystemTag!
-
-After you've edited it, open cmd, change the directory to your `Data\Animations` folder and run: `ruby Particles.rb`
-
-## Conclusion {% id="conclusion" %}
-
-With all of that, you should now you easily be able to use the things we've created to add new functionality to when the player steps on the tile, while having existing things properly set up.
-
-Don't forget to go into your `graphics/tilesets/prio_w.png` and `Data/Tiled/Assets/prio_w.png` and add the new tag on the first "free" tile!
-
-#### Note:
-
-You can combine these scripts into one, as long as you do so in the correct order.
-
diff --git a/src/content/pages/help/pokemon-sdk/custom-environments_fr.mdoc b/src/content/pages/help/pokemon-sdk/custom-environments_fr.mdoc
deleted file mode 100644
index 45914e0..0000000
--- a/src/content/pages/help/pokemon-sdk/custom-environments_fr.mdoc
+++ /dev/null
@@ -1,166 +0,0 @@
----
-title: Comment créer un SystemTag personnalisé ?
-seoDescription: Une page décrivant comment créer un SystemTag personnalisé dans PSDK
-order: 0
----
-
-## Qu'est-ce qu'un "SystemTag" personnalisé ? {% id="what-is-it" %}
-
-Un « SystemTag » personnalisé est un tag personnalisé que vous pouvez attribuer à vos tuiles.
-
-Par exemple, vour pourrez ajouter :
-
-- Des fonctionnalités personnalisées _(les tags système seuls peuvent faire beaucoup, car ils sont utilisés pour créer des rencontres sauvages, glisser sur des tuiles de glace, vous empêcher de glisser, surfer, etc.)_
-- Des arrière-plans de combat personnalisés
-- Des effets de particules personnalisés
-- Des rencontres sauvages personnalisées
-
-## Pour commencer {% id="getting-started" %}
-
-Pour créer votre SystemTag personnalisé, nous allons créer 5 nouveaux scripts courts :
-
-- 00001 GameData\_SystemTags.rb
-- 00002 Environment.rb
-- 00003 Background\_Names.rb
-- 00004 Terrain\_Tags_\__Table.rb
-- 00005 Game\_Character_\__particles.rb _(Facultatif)_
-
-### Création du db_symbol de notre SystemTag {% id="creating+systemtag+db_symbol" %}
-
-#### 00001 GameData_SystemTags.rb:
-
-```ruby
-module GameData
- module SystemTags
- module_function
- # Column 0, row 12 on the SystemTags tileset
- CustomPuddle = gen 0, 12
-
- # Gives the db_symbol of the system tag
- # @param system_tag [Integer]
- # @return [Symbol]
- alias og_system_tag_db_symbol system_tag_db_symbol
- module_function :og_system_tag_db_symbol
- def system_tag_db_symbol(system_tag)
- case system_tag
- when CustomPuddle
- return :custom_puddle
- else
- og_system_tag_db_symbol(system_tag)
- end
- end
- end
-end
-```
-
-- `CustomPuddle = gen 0, 12` - Nous créons une nouvelle constante qui est mappée sur la tuile dans la position spécifiée dans notre ensemble de tuiles SystemTags.
-- `alias og_system_tag_db_symbol system_tag_db_symbol` - Aliasing de la méthode d'origine. (Par prévoyance)
-- Nous renvoyons un nouveau db\_symbol qui sera utilisé lorsque le joueur se trouve sur la tuile. Il doit commencer par`custom_`, et dans ce cas nous avons utilisé `custom_puddle`. (Ceci est utilisé dans Studio lors de la définition de votre zone personnalisée, ainsi que lorsque vous attribuez un effet de particules à ce SystemTag.)
-
-### Création du type de zone (zone_type) pour votre SystemTag {% id="creating+zone+types" %}
-
-#### 00002 Environment.rb
-
-```ruby
-module PFM
- class Environment
- def custom_puddle?
- tag = @game_state.game_player.system_tag
- return (tag == CustomPuddle)
- end
-
- alias og_get_zone_type get_zone_type
- def get_zone_type(ice_prio = false)
- if custom_puddle?
- return 11
- end
- og_get_zone_type(ice_prio = false)
- end
-
- alias og_convert_zone_type convert_zone_type
- def convert_zone_type(system_tag)
- case system_tag
- when CustomPuddle
- return 11
- end
- og_convert_zone_type(system_tag)
- end
- end
-end
-```
-
-- Nous créons une méthode qui vérifie si l'utilisateur est sur le nouveau SystemTag que nous avons créé.
-- Nous créons un alias qui assurera la pérennité de notre méthode `get_zone_type`
-- Nous redéfinissons `get_zone_type` et ajoutons notre méthode qui vérifie si l'utilisateur est sur le nouveau SystemTag et renvoie une valeur. Lorsque les futurs SystemTags sortiront, vous devrez mettre à jour ce numéro.
-- Si l'utilisateur n'est pas sur la nouvelle tuile, il appelle la méthode `get_zone_type` d'origine.
-- Nous créons un alias qui assurera la pérennité de notre méthode `convert_zone_type`
-- Nous redéfinissons `convert_zone_type`, vérifions si l'utilisateur est sur le nouveau SystemTag, renvoyons la même valeur que celle que nous utilisons dans `get_zone_type`. Si l'utilisateur n'est pas sur la nouvelle tuile, il appelle la méthode `convert_zone_type` d'origine.
-
-### Définir un arrière-plan pour votre SystemTag {% id="custom+background" %}
-
-#### 00003 Background_Names.rb
-
-```ruby
-module Battle
- class Logic
- class BattleInfo
- # Name of the background according to their processed zone_type
- BACKGROUND_NAMES.push('sunflower') # 11
- end
- end
-end
-```
-
-- Par défaut, `BACKGROUND_NAMES` choisira une image pour votre zone. Si vous ignorez cette étape, elle aura un arrière-plan noir lorsque vous vous battrez sur cette tuile.
-- Nous envoyons une nouvelle chaîne de caractères (String) vers un tableau déjà existant appelé `BACKGROUND_NAMES`
-- La chaîne de caractère doit être le nom d'une image trouvée dans votre dossier `graphics/battlebacks`
-- L'image de l'arrière-plan est déterminée automatiquement à partir du tableau. C'est pourquoi votre numéro doit être +1 par rapport au précédent.
-
-### Configuration de votre SystemTag pour LocationBased {% id="locationbased+functionality" %}
-
-#### 00004 Terrain_Tags_Table.rb
-
-```ruby
-class Game_Map
- TERRAIN_TAGS_TABLE[GameData::SystemTags::CustomPuddle] = :shallow_water
-end
-```
-
-- Configuration de notre nouveau SystemTag pour utiliser le même terrain tag que `:shallow_water`
-- Ceci est pour les capacités ayant la fonction `LocationBased`
-
-### Créer des effets de particules pour votre SystemTag (Facultatif) {% id="custom+particles" %}
-
-#### 00005 Game_Character_particles.rb
-
-```ruby
-class Game_Character
- PARTICLES_METHODS[CustomPuddle] = :particle_push_custom_puddle
-
- # Define the particle_push_custom_puddle method
- def particle_push_custom_puddle
- Yuki::Particles.add_particle(self, :custom_puddle)
- end
-end
-```
-
-- Ceci est spécifiquement destiné à ajouter une nouvelle particule pour votre nouveau SystemTag. **Si vous n'avez pas envie d'ajouter un effet de particule, vous pouvez ignorer cette étape.**
-- `PARTICLES_METHODS[CustomPuddle] = :particle_push_custom_puddle` - Nous ajoutons notre nouvelle constante au hash `PARTICLES_METHODS`, en lui indiquant la méthode à appeler lorsque le joueur marche sur cette tuile.
-- Nous créons la méthode que nous mappons au hash. Utilisez le `db_symbol` que nous avons défini dans le script précédent.
-
-#### Édition de votre fichier Particles.rb
-
-Vous définissez l'animation de la particule ici, dans votre fichier `Data\Animations\Particles.rb`. Faites défiler jusqu'en bas, au-dessus de `save,` et vous pourrez y définir votre animation. Il y a de nombreux exemples dans ce fichier, mais une bonne chose à savoir est que vous pouvez avoir un effet de particule unique pour chaque TerrainTag sur n'importe quel SystemTag !
-
-Après avoir modifié le fichier, ouvrez cmd, changez le répertoire vers votre dossier `Data\Animations` et exécutez : `ruby Particles.rb`
-
-## Conclusion {% id="conclusion" %}
-
-Avec tout cela, vous devriez maintenant pouvoir utiliser facilement les éléments que nous avons créés pour ajouter de nouvelles fonctionnalités lorsque le joueur marche sur la tuile, tout en ayant les éléments existants correctement configurés.
-
-Vous pouvez aller dans vos fichiers `graphics/tilesets/prio_w.png` et `Data/Tiled/Assets/prio_w.png` pour ajouter le nouveau tag sur la première tuile « libre » !
-
-#### Note
-
-Vous pouvez combiner ces scripts en un seul, à condition de le faire dans le bon ordre.
-
diff --git a/src/content/pages/help/pokemon-sdk/how-contribute-to-pokemon-sdk_en.mdoc b/src/content/pages/help/pokemon-sdk/how-contribute-to-pokemon-sdk_en.mdoc
deleted file mode 100644
index 8e2a75c..0000000
--- a/src/content/pages/help/pokemon-sdk/how-contribute-to-pokemon-sdk_en.mdoc
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: How can I contribute to Pokémon SDK?
-seoDescription: The way to contribute to Pokémon SDK
-publishDate: '2022-09-15 16:20:00'
-order: 0
----
-
-## Fork PSDK
-
-- Go to the [PSDK Repo](https://gitlab.com/pokemonsdk/pokemonsdk)
-- Click on the fork button
-- In your fork
- - Click on the Settings -\> Repository button
- - Go to the `Mirroring repositories` section
- - Put this URL in the Git Repository URL : `https://gitlab.com/pokemonsdk/pokemonsdk.git`
- - Set Mirror Direction to `Pull`
- - Check `Only mirror protected branches`
-
-## Set your local repository
-
-In your Pokémon SDK folder, you'll open `cmd.bat` and write the following commands :
-
-- `cd pokemonsdk`
-- `git remote set-url origin yoursshurl`
- - You can get the url by clicking on `clone` in your PSDK Fork details. Take the SSH URL otherwise it'll be hard to push.
-
-- `git pull`
-
-## When Making a new feature or a bugfix
-
-You should follow the branch naming:
-
-- Feature branche are named like this : `feature/us-ID-name`
-- The bug fix branche are named like this : `bugfix/us-ID-name`
-
-To make your new feature/bugfix enter the following commands your pokemonsdk folder:
-
-- `git checkout development`
-- `git pull`
-- `git checkout -b name_of_the_branch`
-
-You'll be now able to work on what you need to work.
-
-**Note** : You should **never** commit inside `development`. If you do so you'll break your fork (mirroring will never work again).
-
-## When commiting to your branch
-
-If your branch aim to fix a bug, make sure the last commit contains the following in the commit message : `fix #idofthe_issue`
-
-When you'll merge with the official development branch it'll close the issue.
-
-## Before merging to development
-
-First thing to know. You **should not** merge your change to the `development` branch. You **have to make a merge request** from your feature/bugfix branch to the **official** (`pokemonsdk/pokemonsdk`) development branch.
-
-Second thing : **You have to test your feature or your bugfix.**
-
-- The PSDK project should be able to boot
-- All the PSDK feature should work like they worked before (except the one you fixed obviously)
-- Your feature/bugfix should not introduce a new bug (we won't get mad if you didn't see any new bugs)
-
-Third thing : You have to be up to date
-
-- You should merged the `development` branch in your feature/bugfix branch in order to be upto date
-- You should solve all the conflict
-
-## When making the Merge Request
-
-- In `Source branch`
- - Select your project
- - Select the branch you want to merge with PSDK `development`
-
-- In `Target branch`
- - Select the project `NuriYuri/pokemonsdk`
- - Select the branch `development`
-
-- Click on the `Compare branches and continue` button
-
-You'll see the `New Merge Request` UI
-
-- In Title put a title that is a bit more explicit than the branch name
-- In description
- - describe the goal of the merge
- - add reference to issues if needed
- - tell us if you added files that aren't supposed to be in the `pokemonsdk` folder (graphics for example)
- - You can put a link to a 7z archive that adds all the new ressources by simply extracting it in the project root
-
-- Assign the Merge to `NuriYuri` if it's possible
-- Add labels that can make the merge more obvious about the field of application
-- Check `Delete source branch when merge request is accepted.`
-- Check `Squash commits when merge request is accepted.`
-- Click on `Submit merge request` button
-
-If your merge request didn't get any comment or didn't get merged after **one week** contact a PSDK maintainer through the `Pokémon Workshop` Discord (you'll find a link int the website). We have a webhook that tells all the action on the main `Gitlab` repo so `NuriYuri` should see the request but no-one is perfect and `NuriYuri` can forget about it...
-
-## Coding rule
-
-You can find more informations about the [coding rule](https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/CONTRIBUTING.md "Coding rule of PSDK") on the GitLab repository.
-
diff --git a/src/content/pages/help/pokemon-sdk/how-contribute-to-pokemon-sdk_fr.mdoc b/src/content/pages/help/pokemon-sdk/how-contribute-to-pokemon-sdk_fr.mdoc
deleted file mode 100644
index 4b9b051..0000000
--- a/src/content/pages/help/pokemon-sdk/how-contribute-to-pokemon-sdk_fr.mdoc
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: Comment contribuer à Pokémon SDK ?
-seoDescription: Comment contribuer à Pokémon SDK
-order: 0
----
-
-## Fork PSDK
-
-- Se rendre sur le [Repo de PSDK](https://gitlab.com/pokemonsdk/pokemonsdk)
-- Cliquer sur le bouton fork
-- Dans votre fork
- - Cliquer sur Settings -\> Repository button
- - Se rendre dans la section `Mirroring repositories`
- - Placer cette URL dans Git Repository URL : `https://gitlab.com/pokemonsdk/pokemonsdk.git`
- - Régler Mirror Direction à `Pull`
- - Cocher la case `Only mirror protected branches`
-
-## Mettre en place votre repository local
-
-Dans votre dossier Pokémon SDK, ouvrez `cmd.bat` et écrivez les commandes suivantes :
-
-- `cd pokemonsdk`
-- `git remote set-url origin yoursshurl`
- - Vous pouvez récupérer l'URL en cliquant sur `clone` dans les détails de votre Fork de PSDK. Prenez l'URL SSH sinon ce sera compliqué de Push.
-
-- `git pull`
-
-## Lors de la création d'une nouvelle fonctionnalité ou de la correction d'un bug
-
-Vous devez suivre le nommage des branches :
-
-- Les branches des fonctionnalités sont nommées de cette façon : `feature/us-ID-name`
-- Les branches des corrections de bug sont nommées de cette façon : `bugfix/us-ID-name`
-
-Pour créer une nouvelle branche, entrez les commandes suivantes à partir de votre fossier pokemonsdk:
-
-- `git checkout development`
-- `git pull`
-- `git checkout -b name_of_the_branch`
-
-Vous pourrez désormais travailler sur ce que vous devez travailler.
-
-**Note** : Vous ne devez jamais commit sur `development` directement. Si vous le faites, vous casserez votre fork et le mirroring ne fonctionnera plus.
-
-## Quand vous créez un commit sur votre branche
-
-Si votre branche a pour but de corriger un bug, assurez-vous que le dernier commit contient le texte suivant dans le message de commit : `fix #idofthe_issue`
-
-Lorsque vous fusionnerez avec la branche de développement officielle, le problème sera clos.
-
-## Avant d'envoyer vos changements dans la branche development
-
-Première chose à savoir. Vous **ne devez pas** fusionner votre modification avec la branche `development` directement. Vous devez **créer une Merge Request** depuis votre branche feature/bugfix vers le repository officiel et la branche `development` de `pokemonsdk/pokemonsdk`.
-
-Deuxième chose : **Vous devez tester votre fonctionnalité ou votre correction de bug.**
-
-- Le projet PSDK devrait pouvoir démarrer.
-- Toutes les fonctionnalités du PSDK doivent fonctionner comme avant (sauf celle que vous avez corrigée évidemment).
-- Votre fonctionnalité/réparation de bug ne doit pas introduire de nouveau bug (nous ne nous fâcherons pas si vous ne voyez pas de nouveaux bugs).
-
-Troisièmement, il faut être à jour.
-
-- Vous devez fusionner la branche `development` dans votre branche de fonctionnalité/bugfix afin d'être à jour.
-- Vous devez résoudre les conflits.
-
-## Quand vous créez votre Merge Request
-
-- Dans `Source branch`
- - Sélectionnez votre projet
- - Sélectionnez la branche que vous voulez fusionner avec la branche `development`
-
-- Dans `Target branch`
- - Sélectionnez le projet `pokemonsdk/pokemonsdk`
- - Sélectionnez la branche `development`
-
-- Cliquez sur le bouton `Compare branches and continue`
-
-Vous verrez l'interface `New Merge Request`
-
-- Dans Titre, entrez un titre plus explicite que le nom de la branche
-- Dans Description
- - Décrivez le but de la Merge Request
- - Faites référence aux issues ou tâches ClickUp si nécessaire
- - Dites-nous si vous avez ajouté des fichiers qui ne sont pas censés être dans le dossier `pokemonsdk` (graphics par exemple)
- - Vous pouvez mettre un lien vers une archive 7z qui ajoute toutes les nouvelles ressources en l'extrayant simplement dans la racine du projet.
-
-- Assignez la Merge Request à un Maintainer de PSDK.
-- Ajoutez des étiquettes qui peuvent rendre la fusion plus évidente sur le champ d'application.
-- Cochez `Delete source branch when merge request is accepted`
-- Cochez `Squash commits when merge request is accepted`
-- Cliquez sur le bouton `Submit merge request`
-
-Si votre demande de fusion n'a reçu aucun commentaire ou n'a pas été fusionnée après **une semaine** contactez un maintainer de PSDK via le [Discord de Pokémon Workshop](https://discord.com/invite/0noB0gBDd91B8pMk "Lien vers le Discord de Pokémon Workshop"). Nous avons un webhook qui indique toutes les actions sur le repo principal de `Gitlab`, donc un maintainer devrait la voir, mais nous pouvons également être occupés et personne n'est parfait.
-
-## Règles de programmation
-
-Vous pouvez trouver plus d'informations sur les [règles de programmation](https://gitlab.com/pokemonsdk/pokemonsdk/-/blob/development/CONTRIBUTING.md "Règles de programmation de PSDK") sur le repository GitLab.
-
diff --git a/src/content/pages/help/pokemon-sdk/how-edit-map-rxdata-files_en.mdoc b/src/content/pages/help/pokemon-sdk/how-edit-map-rxdata-files_en.mdoc
deleted file mode 100644
index 664c504..0000000
--- a/src/content/pages/help/pokemon-sdk/how-edit-map-rxdata-files_en.mdoc
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: How can I edit or version my map rxdata files?
-seoDescription: The way to edit your map rxdata files and version them
-publishDate: '2022-09-15 17:20:00'
-order: 0
----
-
-Here is the procedure to follow to **convert your rxdata files** :
-
-- Open `cmd.bat`,
-- Write `psdk --util=convert` to convert all your .rxdata files into .yml files, which are easily editable and versionable with Git.
-
-Once your changes are done:
-
-- Open `cmd.bat` once again,
-- Write `psdk --util=restore` to convert all your .yml files into .rxdata which will be readable by the game engine.
-
diff --git a/src/content/pages/help/pokemon-sdk/how-edit-map-rxdata-files_fr.mdoc b/src/content/pages/help/pokemon-sdk/how-edit-map-rxdata-files_fr.mdoc
deleted file mode 100644
index 3d980a0..0000000
--- a/src/content/pages/help/pokemon-sdk/how-edit-map-rxdata-files_fr.mdoc
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: Comment puis-je éditer ou versionner mes fichiers rxdata ?
-seoDescription: La manière de convertir ses fichiers rxdata pour les versionner ou
- les éditer
-order: 0
----
-
-Voici la procédure à suivre pour **convertir vos fichiers rxdata** :
-
-- Ouvrez le fichier `cmd.bat`,
-- Écrivez la commande `psdk --util=convert` pour convertir tous vos fichiers .rxdata en fichiers .yml, qui sont facilement éditables et modifiables avec Git.
-
-Une fois vos modifications effectuées :
-
-- Ouvez le fichier `cmd.bat` à nouveau,
-- Écrivez la commande `psdk --util=restore` pour convertir tous vos fichiers .yml en .rxdata qui seront lisibles par le moteur de jeu.
-
diff --git a/src/content/pages/help/pokemon-sdk/how-generate-csv-files-translate-game-messages_en.mdoc b/src/content/pages/help/pokemon-sdk/how-generate-csv-files-translate-game-messages_en.mdoc
deleted file mode 100644
index 18892ca..0000000
--- a/src/content/pages/help/pokemon-sdk/how-generate-csv-files-translate-game-messages_en.mdoc
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: How can I generate CSV files to translate my game messages?
-seoDescription: How to generate CSV files containing your game texts
-publishDate: '2022-09-15 17:00:00'
-order: 0
----
-
-Here is the procedure to follow to **generate the CSV files containing the texts of your game** :
-
-- Open `cmd.bat`,
-- Write `psdk --util=eventtext2csv`
-- Then press `Enter`.
-
-One CSV per map will be created, containing all the message texts for that map.
-
-**Note:** You will notice that a notch has been added to each message on RPG Maker XP, of type `1, 54 My message`. If this notch is present in a message on RPG Maker XP when you reuse the `psdk --util=eventtext2csv` command, the message will not be deleted or overwritten. Similarly, an existing CSV file will not be modified if the map containing the events with the messages has not been changed.
-
-Indeed, once this notch is present you have to modify those messages via Pokémon Studio.
-
-You can also use an editor like [Google Sheets](https://docs.google.com/spreadsheets/u/0/ "Google Sheets") or [Visual Studio Code](https://code.visualstudio.com/ "Visual Studio Code website") because the modifications will not be taken into account on the RPG Maker XP side. The [Sky CSV](https://marketplace.visualstudio.com/items?itemName=Hanul.sky-csv) extension is suitable for this purpose.
-
diff --git a/src/content/pages/help/pokemon-sdk/how-generate-csv-files-translate-game-messages_fr.mdoc b/src/content/pages/help/pokemon-sdk/how-generate-csv-files-translate-game-messages_fr.mdoc
deleted file mode 100644
index f7c13c8..0000000
--- a/src/content/pages/help/pokemon-sdk/how-generate-csv-files-translate-game-messages_fr.mdoc
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: Comment puis-je générer des fichiers CSV afin de traduire les messages de mon
- jeu ?
-seoDescription: Comment générer des fichiers CSV qui contiennent les textes de votre
- jeu
-order: 0
----
-
-Voici la procédure à suivre **générer les fichiers CSV contenant les textes de votre jeu** :
-
-- Ouvrez le fichier `cmd.bat`,
-- écrivez `psdk --util=eventtext2csv`,
-- appuyez sur `Entrée` pour valider.
-
-Un CSV par carte sera créé, contenant tous les textes des messages de cette dernière.
-
-**Note :** Vous remarquerez qu'une encoche a été ajoutée à chacun des messages sur RPG Maker XP, du type `1, 54 Mon message`. Si cette encoche est présente dans un message sur RPG Maker XP lorsque vous réutilisez la commande `psdk --util=eventtext2csv`, le message ne sera pas supprimé ou écrasé. De même, un fichier CSV déjà existant ne sera pas modifié si la carte sur laquelle se trouve les événements contenant les messages n'ont pas été modifiés.
-
-En effet, une fois cette encoche présente vous devez modifier les messages concernés via la page dédiée sur Pokémon Studio.
-
-Vous pouvez également utiliser un éditeur externe comme [Google Sheets](https://docs.google.com/spreadsheets/u/0/ "Google Sheets") ou [Visual Studio Code](https://code.visualstudio.com/ "Visual Studio Code") car les modifications ne seront pas prises en compte côté RPG Maker XP. L'extension [Sky CSV](https://marketplace.visualstudio.com/items?itemName=Hanul.sky-csv) est adaptée à cet usage.
-
diff --git a/src/content/pages/help/pokemon-sdk/how-to-block-a-move_en.mdoc b/src/content/pages/help/pokemon-sdk/how-to-block-a-move_en.mdoc
deleted file mode 100644
index 38966e8..0000000
--- a/src/content/pages/help/pokemon-sdk/how-to-block-a-move_en.mdoc
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: How to block a move?
-seoDescription: Learn how to block a move with PSDK!
-tags:
-- PSDK
-- ruby
-publishDate: '2024-02-16 12:09:00'
-order: 0
----
-
-## What are the ways to block a move?
-
-Blocking the move is a process that depends on the characteristics of the target. If there is a reason why the target causes a move block, the functions related to blocking should return `true` instead of `false` and provide a message indicating the reason for the block before returning `true`.
-
-### From the move code itself
-
-Some moves may fail due to their mechanics. For example, using `Bind` on a target that is already under the effect of `Bind` should fail. To handle this, there is a method in moves called `move_blocked_by_target?`, which should return `true` if the target is already under the effect of `Bind`.
-
-#### Example with "Octolock"
-
-
-
-Note: To learn more about `move_blocked_by_target?`, _please refer_ to the [**Understanding the move\_blocked\_by\_target? function**](#heading_function-move-blocked) section at the end of the article.
-
-### From the code of an effect
-
-Effects provide a function that returns `true` when `move_blocked_by_target?` is invoked. This method is called `on_move_prevention_target`. Its functionality is similar to `move_blocked_by_target?`; if it returns `true`, the move will be dodged. This is useful for creating effects (abilities, items, weather, terrains, etc.) that grant a Pokemon immunity to certain moves.
-
-#### Example with the Ability "Good as Gold"
-
-
-
-## Understanding the function `move_blocked_by_target?` {% id="function-move-blocked" %}
-
-
-
-What particularly interests us in this function:
-
-- `exec_hooks(Move, :move_prevention_target, binding)`
-
-**exec\_hooks:** This method is called to execute a series of `Hooks`. `Hooks` are functions or procedures triggered by specific events or conditions in the program. They allow modifications to the standard behavior of a function or the addition of extra functionalities without altering the original function's code.
-
-**Move:** The first argument specifies the context or domain of the `Hooks` to execute. Here, `Move` indicates that the `Hooks` are related to Pokemon moves, representing the class that groups `Hooks` associated with moves.
-
-**:move\_prevention\_target:** The second argument is a symbol that identifies the specific `Hooks` to execute. In this case, `:move_prevention_target` refers to `Hooks` that determine whether a Pokemon can perform a specific move. These `Hooks` may include checks for conditions such as status effects, terrain, weather, or other factors that might block the move.
-
-**binding:** The third argument **,** `binding`, encapsulates the execution context of the code in Ruby, including local variables, methods, and the value of `self`. Passing `binding` to `exec_hooks` enables the `Hooks` to access and modify the context in which `exec_hooks` was called, allowing them to interact seamlessly with the original code of the `move_blocked_by_target?` method.
-
-### Understanding the procedure of the function `move_blocked_by_target?`
-
-**Hook Call**
-When `exec_hooks(Move, :move_prevention_target, binding)` is executed, it identifies and runs all Hooks associated with the event or condition `:move_prevention_target` in the context of moves (`Move`). These Hooks are triggered to evaluate whether the move can be performed under the current conditions.
-
-**Handling the Value Returned by the Hook**
-If none of the executed Hooks raises a `Hooks::ForceReturn` exception, the `move_blocked_by_target?` function proceeds with its normal execution and eventually reaches the `return false` statement at the end. This indicates that the move is not blocked.
-
-However, if a Hook determines that the move should not be executed and returns `true`—either directly or by raising an exception like `Hooks::ForceReturn` with `e.data` set to `true`—the execution of `move_blocked_by_target?` is interrupted. In this case, the function immediately returns `true` to its caller.
-
-**Consequences of Returning** `true`
-Returning `true` signifies that the move has been prevented due to specific conditions. This could result from various in-game factors such as terrain effects, abilities, status effects, or other mechanisms.
-
-The calling function or method that invoked `move_blocked_by_target?` must then handle this `true` return value to determine the next steps. For example, it might display a message to the player explaining why the move was blocked or apply additional effects resulting from the prevention.
-
diff --git a/src/content/pages/help/pokemon-sdk/how-to-block-a-move_fr.mdoc b/src/content/pages/help/pokemon-sdk/how-to-block-a-move_fr.mdoc
deleted file mode 100644
index 847d299..0000000
--- a/src/content/pages/help/pokemon-sdk/how-to-block-a-move_fr.mdoc
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: Comment bloquer une attaque ?
-seoDescription: Apprendre à bloquer une attaque avec PSDK !
-order: 0
----
-
-## Quelles sont les façons de bloquer une attaque ?
-
-Bloquer une attaque est un processus qui dépend des caractéristiques de la cible. Si une raison empêche la cible d'effectuer une attaque, les fonctions liées au blocage doivent retourner `true` au lieu de `false` et fournir un message indiquant la raison du blocage avant de retourner `true`.
-
-### Depuis le code de l'attaque en lui même
-
-Certaines attaques peuvent échouer en raison de leurs mécaniques. Par exemple, utiliser `Etreinte` sur une cible déjà sous l'effet de cette même attaque devrait échouer. Pour gérer cela, il existe une méthode dans les attaques appelée `move_blocked_by_target?`, qui doit retourner `true` si la cible est déjà sous l'effet `d'Etreinte` .
-
-#### Exemple avec "Octoprise" :
-
-
-
-Note : Pour en savoir plus sur la fonction `move_blocked_by_target?`, veuillez vous référer à la section [**Comprendre la fonction move\_blocked\_by\_target?**](#heading_function-move-blocked "Comprendre la fonction move\_blocked\_by\_target?") à la fin de l'article.
-
-### Depuis le code d'un effet
-
-Les effets fournissent une fonction qui retourne `true` lorsque `move_blocked_by_target?` est invoquée. Cette méthode s'appelle `on_move_prevention_target`. Son fonctionnement est similaire à `move_blocked_by_target?` ; si elle retourne `true`, le mouvement sera esquivé. Cela est utile pour créer des effets (capacités, objets, météo, terrains, etc.) qui confèrent à un Pokémon une immunité contre certaines attaques.
-
-#### Exemple avec le talent "Corps en Or" :
-
-
-
-## Comprendre la fonction `move_blocked_by_target?` {% id="function-move-blocked" %}
-
-
-
-Ce qui nous intéresse particulièrement dans cette fonction :
-
-- `exec_hooks(Move, :move_prevention_target, binding)`
-
-**exec\_hooks** : Cette méthode est appelée pour exécuter une série de `Hooks`. Les `Hooks` sont des fonctions ou procédures déclenchées par des événements ou conditions spécifiques dans le programme. Ils permettent de modifier le comportement standard d'une fonction ou d'ajouter des fonctionnalités supplémentaires sans altérer le code original de cette fonction.
-
-**Move** : Le premier argument spécifie le contexte ou le domaine des `Hooks` à exécuter. Ici, `Move` indique que les `Hooks` sont liés aux attaques des Pokémon, représentant la classe qui regroupe les `Hooks` associés aux attaques.
-
-Le deuxième argument est un symbole qui identifie les `Hooks` spécifiques à exécuter. Dans ce cas, fait référence aux `Hooks` qui déterminent si un Pokémon peut effectuer une attaque spécifique. Ces `Hooks` peuvent inclure des vérifications de conditions telles que les effets de statut, le terrain, la météo ou d'autres facteurs susceptibles de bloquer l'attaque.
-
-**binding** : Le troisième argument, `binding`, encapsule le contexte d'exécution du code en Ruby, incluant les variables locales, les méthodes et la valeur de `self`. Passer `binding` à `exec_hooks` permet aux `Hooks` d'accéder et de modifier le contexte dans lequel `exec_hooks` a été appelé, leur permettant ainsi d’interagir de manière fluide avec le code original de la méthode `move_blocked_by_target?`.
-
-### Comprendre la procédure de la fonction `move_blocked_by_target?`
-
-**Appel des Hooks**
-Lorsqu'`exec_hooks(Move, :move_prevention_target, binding)` est exécuté, il identifie et exécute tous les `Hooks` associés à l'événement ou à la condition dans le contexte des attaques ( **Move** ). Ces `Hooks` sont déclenchés pour évaluer si l'attaque peut être effectué dans les conditions actuelles.
-
-**Gestion de la valeur retournée par le Hook**
-Si aucun des `Hooks` exécutés ne lève une exception `Hooks::ForceReturn`, la fonction `move_blocked_by_target?` poursuit son exécution normale et atteint finalement l'instruction `return false` à la fin. Cela indique que l'attaque n'est pas bloqué.
-
-Cependant, si un `Hook` détermine que l'attaque ne doit pas être exécuté et retourne `true` — soit directement, soit en levant une exception comme `Hooks::ForceReturn` avec `e.data` défini à `true` — l'exécution de `move_blocked_by_target?` est interrompue. Dans ce cas, la fonction retourne immédiatement `true` à son appelant.
-
-**Conséquences du retour de** `true`
-Retourner `true` signifie que l'attaque a été empêché en raison de conditions spécifiques. Cela peut être causé par divers facteurs dans le jeu, tels que les effets de terrain, les talents, les effets de statut ou d'autres mécanismes.
-
-La fonction ou méthode appelante qui a invoqué `move_blocked_by_target?` doit ensuite gérer cette valeur de retour `true` pour déterminer les prochaines étapes. Par exemple, elle pourrait afficher un message au joueur expliquant pourquoi l'attaque a été bloqué ou appliquer des effets supplémentaires résultant de cette prévention.
-
diff --git a/src/content/pages/learn/arrays-in-ruby_en.mdoc b/src/content/pages/learn/arrays-in-ruby_en.mdoc
deleted file mode 100644
index 45af5ea..0000000
--- a/src/content/pages/learn/arrays-in-ruby_en.mdoc
+++ /dev/null
@@ -1,357 +0,0 @@
----
-title: Arrays in Ruby
-seoDescription: How to use array to their full potential in Ruby
-cover:
-- "./images/stacks_of_agar_plates.jpg"
-publishDate: '2022-10-01 16:00:00'
-order: 20221001
----
-
-Hi, while reading discord messages about doing stuff involving arrays, I often see stuff like `array[rand(array.length)]` or for loops. This is kind of sad because Ruby implemented a lot of methods allowing to transform an input collection to anything you need, it's almost as powerful as SQL but with ruby methods & blocks chaining.
-
-In this page I'll show some ways to use arrays so you can do almost anything you want. If you want to see more, you can have a look into the official [Ruby Documentation](https://ruby-doc.org/core/Array.html).
-
-## Creating an array {% id="create" %}
-
-In Ruby there's several ways to create an array, depending on what you need you can write it a different way. Each chapters of this section will show a preferred way to create an array.
-
-### Create an empty Array
-
-The best way to create an empty array is using the array litteral:
-
-```ruby
-new_array = []
-```
-
-### Create an array of any values
-
-Most of the time, you might create an array of any kind of value. If that doesn't come from data processing (ie. this array is used as static data), you can just use the array litteral, here's an example:
-
-```ruby
-new_array = [
- 1,
- 'string',
- :symbol
-]
-```
-
-### Create an array of string
-
-If you need to create an array of string, ruby has a special litteral that allows you to create it and make it easier. You won't have to write the comma and the quotes!
-
-Here's few examples:
-
-```ruby
-array_of_string1 = %w[word1 word2 string\ with\ spaces last_word]
-# Result: ["word1", "word2", "string with spaces", "last_word"]
-
-array_of_string2 = %w[
- word1 word2
- string\ with\ spaces
- last_word
-]
-# Result: ["word1", "word2", "string with spaces", "last_word"]
-```
-
-### Create an array of symbol
-
-In a similar way, you can create an array of symbol without having to write the `:` character and the commas. Array of symbol are really useful because symbols is used everywhere in Ruby. For example Items are identified with a symbol in Pokémon SDK, the potion can be found with the symbol `:potion`
-
-Here's an example of array of symbol:
-
-```ruby
-array_of_symbol1 = %i[potion elixir candy]
-# Result: [:potion, :elixir, :candy]
-
-array_of_symbol2 = %i[
- potion
- elixir
- candy
-]
-# Result: [:potion, :elixir, :candy]
-```
-
-### Creating an array from another sequence
-
-Usually sequence or enumerators do have a `to_a` method that allow you to create an array from it. Here's some examples:
-
-```ruby
-array_of_1_upto_5_included = (1..5).to_a
-# Result: [1, 2, 3, 4, 5]
-
-alphabet = ('a'..'z').to_a
-# Result: ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
-
-array_of_chars = "My string".each_char.to_a
-# Result: ["M", "y", " ", "s", "t", "r", "i", "n", "g"]
-
-array_of_lines = "My string\nWith lines".each_line.to_a
-# Result: ["My string\n", "With lines"]
-
-array_of_bytes = "\x01\x25\xFF".each_byte.to_a
-# Result: [1, 37, 255]
-```
-
-## Retrieve values from array {% id="get" %}
-
-Array store a collection of data, you almost certainly want to get one specific data value from an array. Fortunately, Ruby is not C, you have a lot of methods in array to get the data you need depending on what you need.
-
-### Get first or last value of an array
-
-As you may be aware, arrays do have the operator `[]` to get a value from the array. This operator is pretty usefull when you know the index of the element in advance but sometimes you want to be explicit about what you want. For example, getting the last element of an array is often hard because each language does it differently. Getting the first element of an array can also be confusing, if you come from Mathematical studies/programming, the first index is 1, in many language it's 0.
-
-In order to make that less confusing Ruby comes with two methods: `first` and `last`. They respectively give you the first or the last element of the array. Here's an example:
-
-```ruby
-my_array = [1, 2, 3, 4, 5]
-first_element = my_array.first
-# Result: 1
-last_element = my_array.last
-# Result: 5
-```
-
-### Finding an element in an array
-
-Array store many kind of data, sometimes you want to find an element that match specific criteria. Hopefully Ruby comes with a method to do that. This method uses a block of code that must forward a boolean value to tell if the element is the one you need. This method is simply called `find`.
-
-Here's few examples:
-
-```ruby
-array_of_words = %w[Madrid Paris London Berlin]
-# Find the first word that starts with L
-word_starting_with_l = array_of_words.find { |word| word.start_with?('L') }
-# Result: "London"
-
-array_of_numbers = [1, 5, 6, 2, 3]
-# Find the first element that is even
-first_even_number = array_of_numbers.find(&:even?)
-# Result: 6
-# Note: find(&:even?) is strictly equivalent to find { |number| number.even? }
-```
-
-### Finding the index of an element in array
-
-In a similar way of finding an element, you might want the index of that element. If you know the element in advance, you can simply call `index` and this method will give you the index of that specific element. If you don't know the element but you are able to describe it, you can instead use the method `find_index`. Here's some examples:
-
-```ruby
-array_of_numbers = [1, 5, 3, 2]
-# Find the index of 5 in the array
-index_of5 = array_of_numbers.index(5)
-# Result: 1
-
-array_of_string = %w[coffee tea water soda]
-# Find the index of the first word starting with w
-index_of_word_starting_with_w = array_of_string.find_index { |word| word.start_with?('w') }
-# Result: 2
-```
-
-### Get a random element of the array
-
-In ruby, it's really easy to get a random element of the array, you don't need complex algorithm, just call the method `sample` and it will pick any sample of the array at random.
-
-Examples:
-
-```ruby
-array_of_numbers = [1, 2, 3, 4, 5, 6]
-# Getting any element at random
-random_element = array_of_numbers.sample
-# Result: Any of the value from the array (cannot predict without knowing the seed ;))
-
-# Getting any element at random using a Random object
-predictable_element = array_of_numbers.sample(random: Random.new(5))
-# Result: 4
-```
-
-### Getting the lowest or highest element of the array
-
-If you need to get the lowest or highest element of an array, array do implement `min` and `max` methods. If your elements are object and you need to use a property of those objects, you can use `min_by` or `max_by` to do so. Examples:
-
-```ruby
-array_of_number = [5, -3, 2, 66, 4]
-highest_number = array_of_number.max
-# Result: 66
-lowest_number = array_of_number.min
-# Result: -3
-
-array_of_string = %w[hello worlds !]
-longer_string = array_of_string.max_by(&:size)
-# Result: "worlds"
-smaller_string = array_of_string.min_by(&:size)
-```
-
-## Get special values from an array {% id="special" %}
-
-Arrays also have methods that allow you to get values that are not in the array but result from the content of the array.
-
-### Getting the size of the array
-
-Normally you don't often need this value but just in case one of your script needs to know the size of an array you can use the `size` method (like strings).
-
-Example:
-
-```ruby
-array_of_numbers = [1, 2, 3, 4, 5, 2]
-# Getting the size of this array
-size_of_array = array_of_numbers.size
-# Result: 6
-```
-
-### Getting the sum of all elements in the array
-
-You might think it's too much but you can indeed compute a sum from an array using the method `sum`.
-
-Here's some examples:
-
-```ruby
-array_of_numbers = [1, 2, 3]
-sum_of_numbers = array_of_numbers.sum
-# Result: 6
-
-array_of_string = ['a', 'ab', 'abc']
-sum_of_sizes = array_of_string.sum(&:size)
-# Result: 6
-```
-
-### Counting values that match criteria
-
-You might want to count values that match a criteria in an array, fortunately array comes with the `count` method, here's an example:
-
-```ruby
-array_of_numbers = [1, 2, 3, 4, 5]
-count_of_odd_numbers = array_of_numbers.count(&:odd?)
-# Result: 3
-```
-
-### Transforming the whole array into a value
-
-Sometimes you want to turn a whole array into something else, fortunately you have a method for that, it's called `reduce`. This method is often used in JavaScript to do all the thing ruby can't do when the developper doesn't want to load `lodash` ;)
-
-Here's an example of reducing array:
-
-```ruby
-array_of_sentence_badly_combined = ['My first', 'sentence', 'My second ', 'sentence.']
-paragraph = array_of_sentence_badly_combined.reduce('') do |prev, curr|
- sentence = prev.rstrip
- continuation = curr.lstrip
- next sentence << continuation if continuation[0] == continuation[0].downcase
- next sentence << '. ' << continuation unless sentence.end_with?('.') || sentence.empty?
- next sentence << continuation
-end
-
-# Result: "My firstsentence. My secondsentence."
-```
-
-### Telling if the array contain any value that match a criteria
-
-Sometimes you want to test if your array contains a value that match a criteria, to do so you can use the method `any?` this method use a block to check each values and return a boolean. If you already know the exact value, you can just use `include?` which checks if the array contains your value. Examples:
-
-```ruby
-array_of_number = [1, 2, 3, 4]
-array_contains_even_number = array_of_number.any?(&:even?)
-# Result: true
-array_contains_zero = array_of_number.any?(&:zero?)
-# Result: false
-array_contains2 = array_of_number.include?(2)
-```
-
-Bonus point, if you don't give any argument/parameter to the `any?` method, you can check if the array contains a value. Pretty useful when you don't want to write `unless array.empty?` :)
-
-Be careful though, `nil` and `false` does not count as values.
-
-```ruby
-empty_array = []
-array_is_not_containing_value = empty_array.any?
-# Result: false
-
-array_containing_something = [0]
-array_is_containing_value = array_containing_something.any?
-# Result: true
-
-array_containing_something_but_any_says_false = [false, nil]
-bad_state_but_okeyish = array_containing_something_but_any_says_false.any?
-# Result: false
-```
-
-## Testing if all or none of the values in array match criteria
-
-As for `any?` array have the method `none?` and `all?` to check if none or all of the value in array match the criteria you want.
-
-Example:
-
-```ruby
-array_of_odd_numbers = [1, 3, 5]
-all_odd = array_of_odd_numbers.all?(&:odd?)
-# Result: true
-none_even = array_of_odd_numbers.none?(&:even?)
-# Result: true
-```
-
-## Transforming arrays {% id="transformations" %}
-
-One thing that you might often have to do with arrays is transforming them. Putting aside `push`, `pop` and `delete` ruby comes with a lot of methods that help you transforming your array. Note that those method doesn't mutate the array (unlike push, pop & delete), if you want to overwrite the array, use the method name that ends with a bang (`!`).
-
-### Removing all the nil values from an array
-
-Sometimes your array end up with nil values, fortunately there's a method to remove them all! This method is `compact` example:
-
-```ruby
-array_with_nils = [1, nil, 2, 3, nil]
-array_without_nils = array_with_nils.compact
-# Result: [1, 2, 3]
-```
-
-### Filtering values from array
-
-In Ruby there's two method to perform filtering:
-
-- `select` to select all the values that match the criteria
-- `reject` to reject all the values that match the criteria
-
-```ruby
-array_of_number = [0, 1, 2, 3, 4]
-array_of_odd_numbers = array_of_number.select(&:odd?)
-# Result: [1, 3]
-array_of_number_that_arent_odd = array_of_number.reject(&:odd?)
-# Result: [0, 2, 4]
-```
-
-### Transforming the values of an array
-
-Sometimes the values you currently have in the array are not the one you need, you can transform them using the `map` method. Example:
-
-```ruby
-array_of_number = [1, 2, 3]
-array_of_twice_the_number = array_of_number.map { |n| n * 2 }
-# Result: [2, 4, 6]
-```
-
-### Rotating an array
-
-Very occasionally you might want to rotate an array, if you need to do so, just call the `rotate` method. Here's some examples:
-
-```ruby
-my_array = [1, 2, 3, 4]
-my_array_rotated_to_left = my_array.rotate(1)
-# Result: [2, 3, 4, 1]
-my_array_rotated_to_right = my_array.rotate(-1)
-# Result: [4, 1, 2, 3]
-```
-
-### Shuffling the array
-
-If you want give a random order to each value of the array, you can use `shuffle`. Example:
-
-```ruby
-my_array = [1, 2, 3, 4]
-my_array_in_random_order = my_array.shuffle
-# Example result: [2, 3, 4, 1]
-my_array_in_seeded_order = my_array.shuffle(random: Random.new(6))
-# Result: [1, 4, 2, 3]
-```
-
-## Credits
-
-Hero image from: [Wiki Media Commons](https://commons.wikimedia.org/wiki/File:Stacks_of_agar_plates.jpg)
-
-Article written by Nuri Yuri
-
diff --git a/src/content/pages/learn/arrays-in-ruby_fr.mdoc b/src/content/pages/learn/arrays-in-ruby_fr.mdoc
deleted file mode 100644
index 49bad98..0000000
--- a/src/content/pages/learn/arrays-in-ruby_fr.mdoc
+++ /dev/null
@@ -1,371 +0,0 @@
----
-title: Les tableaux en Ruby
-seoDescription: Comment utiliser les tableaux à leurs plein potentiel en Ruby
-cover:
-- "./images/stacks_of_agar_plates.jpg"
-publishDate: '2022-10-01 16:00:00'
-order: 20221001
----
-
-Salut, en lisant des message discord à propos de code relatif aux tableaux, je vois souvent des choses comme `array[rand(array.length)]` ou des boucle for. C'est relativement triste puis-ce que Ruby a implémenter un certain nombre de méthode permettant de transformer une collection d'entrée en ce que vous avez besoin. C'est presque aussi puissant que du SQL mais avec des chaines et méthodes & blocks Ruby!
-
-Dans cette page, je vais vous montrer des façons d'utiliser les tableaux pour faire ce que vous voulez. Si vous voulez en voir plus, n'hésitez pas à regarder la [Documentation officielle de Ruby](https://ruby-doc.org/core/Array.html).
-
-## Créer un tableau {% id="create" %}
-
-En Ruby il existe plusieurs façons de créer un tableau, en fonction de ce dont vous avez besoin, vous pouvez l'écrire d'une différent façon. Chaque chapitre de cette section montrera une des façons préférée de créer un tableau.
-
-### Créer un tableau vide
-
-La meilleure façon de créer un tableau vide est d'utiliser l'écriture littérale:
-
-```ruby
-new_array = []
-```
-
-### Créer un tableau de quelconque valeurs
-
-La plupart du temps, vous créerez des tableaux de valeurs quelconques. Si ça ne vient pas d'un calcul de données (ex, le tableau est utilisé comme des données statiques), vous pouvez simplement utiliser l'écriture littérale:
-
-```ruby
-new_array = [
- 1,
- 'string',
- :symbol
-]
-```
-
-### Créer un tableau de chaine de caractères
-
-Si vous avez besoin de créer un tableau de chaines de caractères, Ruby a une écriture spécifique pour ça. Cette écriture simplifie la création car vous n'aurez pas besoin d'écrire les virgules et les guillemet anglais.
-
-Voic quelques exemples:
-
-```ruby
-array_of_string1 = %w[word1 word2 string\ with\ spaces last_word]
-# Result: ["word1", "word2", "string with spaces", "last_word"]
-
-array_of_string2 = %w[
- word1 word2
- string\ with\ spaces
- last_word
-]
-# Result: ["word1", "word2", "string with spaces", "last_word"]
-```
-
-### Créer un tableau de Symboles
-
-D'une façon similaire, vous pouvez créer un tableau de Symboles sans avoir à écrire le caractère `:` et les virgules. C'est très pratique car les Symboles sont au coeur de Ruby. Par exemple, les objets sont identifiés avec un Symbole dans Pokémon SDK, le symbole de la potion est `:potion`.
-
-Voici des exemples:
-
-```ruby
-array_of_symbol1 = %i[potion elixir candy]
-# Result: [:potion, :elixir, :candy]
-
-array_of_symbol2 = %i[
- potion
- elixir
- candy
-]
-# Result: [:potion, :elixir, :candy]
-```
-
-### Créer un tableau à partir d'un autre type de séquence
-
-En général, les séquence ou énumérateurs ont une méthode `to_a` qui permet de la convertir en tableau. Voici quelques exemples:
-
-```ruby
-array_of_1_upto_5_included = (1..5).to_a
-# Result: [1, 2, 3, 4, 5]
-
-alphabet = ('a'..'z').to_a
-# Result: ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
-
-array_of_chars = "My string".each_char.to_a
-# Result: ["M", "y", " ", "s", "t", "r", "i", "n", "g"]
-
-array_of_lines = "My string\nWith lines".each_line.to_a
-# Result: ["My string\n", "With lines"]
-
-array_of_bytes = "\x01\x25\xFF".each_byte.to_a
-# Result: [1, 37, 255]
-```
-
-## Récupérer une valeur dans un tableau {% id="get" %}
-
-Les tableaux stockent une collection de données. Vous avez souvent besoin d'en récupérer une valeur. Heureusement, Ruby n'est pas le C, vous avez tout un tas de méthodes vous permettant de récupérer des données selon vos besoins!
-
-### Obtenir la première ou dernière valeur d'un tableau
-
-Comme vous devriez surement le savoir, les tableaux ont l'opérateur `[]` qui permet de récupérer un valeur si vous en connaissez l'index. Malheureusement, parfois vous ne connaissez pas toujours l'index d'un élément, en particulier le dernier. C'est pourquoi Ruby a implémenté la méthode `last` et son opposé `first` qui permettent respectivement de récupérer le dernier et le premier élément d'un tableau.
-
-Ceci rend le code infiniment plus lisible car lorsque vous avez étudié les Maths, le premier index est 1 et non 0. Le dernier index en tant que -1 est assez illogique et parfois mystérieux.
-
-Voici des exemple d'usage de ces méthodes:
-
-```ruby
-my_array = [1, 2, 3, 4, 5]
-first_element = my_array.first
-# Result: 1
-last_element = my_array.last
-# Result: 5
-```
-
-### Trouver une valeur dans un tableau
-
-Les tableaux stockent plusieurs type de données. Parfois, vous cherchez un élément en particulier. Heureusement, Ruby a plusieurs méthodes pour réaliser cela. La méthode dont on parle est tout simplement `find`, elle prend un block en paramètre pour décrire ce que vous cherchez et vous renvoie la première valeur qui correspond à vos critères.
-
-Voici quelques exemples:
-
-```ruby
-array_of_words = %w[Madrid Paris London Berlin]
-# Find the first word that starts with L
-word_starting_with_l = array_of_words.find { |word| word.start_with?('L') }
-# Result: "London"
-
-array_of_numbers = [1, 5, 6, 2, 3]
-# Find the first element that is even
-first_even_number = array_of_numbers.find(&:even?)
-# Result: 6
-# Note: find(&:even?) is strictly equivalent to find { |number| number.even? }
-```
-
-### Trouver l'index d'un élément dans un tableau
-
-D'une manière équivoque, vous cherchez peut-être juste la position de cet élément dans le tableau. Si vous connaissez déjà la valeur vous pouvez utiliser la méthode `index`, sinon vous pouvez utiliser la méthode `find_index` en donnant un block qui décrit à quoi ressemble la valeur que vous cherchez.
-
-Voici quelques exemples:
-
-```ruby
-array_of_numbers = [1, 5, 3, 2]
-# Find the index of 5 in the array
-index_of5 = array_of_numbers.index(5)
-# Result: 1
-
-array_of_string = %w[coffee tea water soda]
-# Find the index of the first word starting with w
-index_of_word_starting_with_w = array_of_string.find_index { |word| word.start_with?('w') }
-# Result: 2
-```
-
-### Obtenir un élément de manière aléatoire
-
-En Ruby, c'est vraiment simple d'obtenir un élément de manière aléatoire dans un tableau. Il suffit d'appeler la méthode `sample`:
-
-```ruby
-array_of_numbers = [1, 2, 3, 4, 5, 6]
-# Getting any element at random
-random_element = array_of_numbers.sample
-# Result: Any of the value from the array (cannot predict without knowing the seed ;))
-
-# Getting any element at random using a Random object
-predictable_element = array_of_numbers.sample(random: Random.new(5))
-# Result: 4
-```
-
-### Obtenir le plus petit ou le plus grand élément d'un tableau
-
-Si vous avez besoin de la plus petite ou plus grande valeur d'un tableau, il existe les méthodes `min` et `max`. Si votre tableau ne contient pas des nombres, vous pouvez utiliser `min_by` et `max_by` pour décrire la grandeur de vos éléments!
-
-Voici des exemples:
-
-```ruby
-array_of_number = [5, -3, 2, 66, 4]
-highest_number = array_of_number.max
-# Result: 66
-lowest_number = array_of_number.min
-# Result: -3
-
-array_of_string = %w[hello worlds !]
-longer_string = array_of_string.max_by(&:size)
-# Result: "worlds"
-smaller_string = array_of_string.min_by(&:size)
-```
-
-## Récupérer des valeurs spéciales {% id="special" %}
-
-Les tableaux possèdent également des méthodes permettant de récupérer des valeurs qui ne sont pas dans le tableau elles-même mais qui résultent de son contenu.
-
-### Obtenir la taille d'un tableau
-
-Normalement, vous n'avez pas souvent besoin de cette valeur, mais au cas où, la méthode pour récupérer la taille d'un tableau est la même que pour les chaines de caractères: `size`
-
-Exemple:
-
-```ruby
-array_of_numbers = [1, 2, 3, 4, 5, 2]
-# Getting the size of this array
-size_of_array = array_of_numbers.size
-# Result: 6
-```
-
-### Obtenir la somme de tous les éléments
-
-Pour calculer la somme de tous les éléments d'un tableau il suffit simplement d'appeler la méthode `sum`. Cette méthode peut également utiliser un block pour donner du sens à ce que vous sommez:
-
-```ruby
-array_of_numbers = [1, 2, 3]
-sum_of_numbers = array_of_numbers.sum
-# Result: 6
-
-array_of_string = ['a', 'ab', 'abc']
-sum_of_sizes = array_of_string.sum(&:size)
-# Result: 6
-```
-
-### Compter les valeurs qui correspondent à un critère
-
-Comme en SQL, la méthode `count` sert à ça. Vous pouvez lui donner les critères en block et elle vous renverra le nombre d'élément qui valident ces critères:
-
-```ruby
-array_of_numbers = [1, 2, 3, 4, 5]
-count_of_odd_numbers = array_of_numbers.count(&:odd?)
-# Result: 3
-```
-
-### Convertir l'intégralité du tableau en une autre valeur
-
-Parfois, vous avez besoin de transformer un tableau en une tout autre valeur. La méthode qui permet ça s'appelle `reduce`. En JavaScript, si vous ne désirez pas utiliser lodash c'est souvent la méthode que vous utiliserez.
-
-Voici un exemple de conversion de tableau:
-
-```ruby
-array_of_sentence_badly_combined = ['My first', 'sentence', 'My second ', 'sentence.']
-paragraph = array_of_sentence_badly_combined.reduce('') do |prev, curr|
- sentence = prev.rstrip
- continuation = curr.lstrip
- next sentence << continuation if continuation[0] == continuation[0].downcase
- next sentence << '. ' << continuation unless sentence.end_with?('.') || sentence.empty?
- next sentence << continuation
-end
-
-# Result: "My firstsentence. My secondsentence."
-```
-
-### Vérifier si le tableau contient une valeur particulière
-
-Parfois, vous voulez tester si le tableau contient une valeur qui correspond à certains critères. La méthode `any?` vous permet de faire cela, donnez lui un block et elle reverra un boolean indiquant si ce block a été validé au moins une fois.
-
-Notez que si vous connaissez la valeur que vous voulez tester, vous pouvez simplement utiliser `include?`.
-
-Voici des exemples:
-
-```ruby
-array_of_number = [1, 2, 3, 4]
-array_contains_even_number = array_of_number.any?(&:even?)
-# Result: true
-array_contains_zero = array_of_number.any?(&:zero?)
-# Result: false
-array_contains2 = array_of_number.include?(2)
-```
-
-Bonus pour vous. Si vous ne donnez aucun block à `any?`, vous pourrez plus ou moins tester si le tableau contient au moins un élément valide. (Tout sauf `nil` ou `false`).
-
-Ceci peut être utile pour éviter d'écrire `unless array.empty?` si vous êtes certain que votre tableau doit contenir des valeurs valides.
-
-```ruby
-empty_array = []
-array_is_not_containing_value = empty_array.any?
-# Result: false
-
-array_containing_something = [0]
-array_is_containing_value = array_containing_something.any?
-# Result: true
-
-array_containing_something_but_any_says_false = [false, nil]
-bad_state_but_okeyish = array_containing_something_but_any_says_false.any?
-# Result: false
-```
-
-## Tester si aucun ou tous les éléments d'un tableau valide un critère
-
-Comme pour `any?`, les tableaux ont la méthode `none?` et `all?` qui permettent de vérifier respectivement si aucune ou toute les valeurs d'un tableau correspondent aux critères donnés en block.
-
-Exemple:
-
-```ruby
-array_of_odd_numbers = [1, 3, 5]
-all_odd = array_of_odd_numbers.all?(&:odd?)
-# Result: true
-none_even = array_of_odd_numbers.none?(&:even?)
-# Result: true
-```
-
-## Transformer les tableaux {% id="transformations" %}
-
-L'une des choses que vous allez surement beaucoup faire avec les tableaux, c'est les transformer. En dehors de `push`, `pop` et `delete`, Ruby définit un certain nombre de méthodes permettant de transformer les tableaux selon vos besoins.
-
-Notez que la majorité de ces méthodes n'affectent pas le tableau d'origine, si vous voulez que le tableau d'origine soit affecté, il faudra utiliser la variante de ces méthodes qui finissent par un point d'exclamation.
-
-### Supprimer les nils d'un tableau
-
-Il peut vous arriver que votre tableau finisse avec des valeurs nil. Heureusement, il existe une méthode pour tous les supprimer: `compact`.
-
-Voici un exemple:
-
-```ruby
-array_with_nils = [1, nil, 2, 3, nil]
-array_without_nils = array_with_nils.compact
-# Result: [1, 2, 3]
-```
-
-### Filtrer les valeurs d'un tableau
-
-Ruby défini deux méthodes pour filtrer les valeurs d'un tableau
-
-- `select` to garder toute les valeurs qui correspondent au critère
-- `reject` to supprimer toute les valeurs qui correspond au critère
-
-```ruby
-array_of_number = [0, 1, 2, 3, 4]
-array_of_odd_numbers = array_of_number.select(&:odd?)
-# Result: [1, 3]
-array_of_number_that_arent_odd = array_of_number.reject(&:odd?)
-# Result: [0, 2, 4]
-```
-
-### Transformer les valeurs d'un tableau
-
-Parfois, vous avez besoin de convertir le contenu du tableau, pour cela vous avez la méthode `map`.
-
-Exemple:
-
-```ruby
-array_of_number = [1, 2, 3]
-array_of_twice_the_number = array_of_number.map { |n| n * 2 }
-# Result: [2, 4, 6]
-```
-
-### Pivoter un tableau
-
-Si vous avez utilisé un DSP une fois dans votre vie, vous avez à quel point ça peut être pratique de pivoter un tableau (ou d'avoir des tableau purement circulaire). Ruby possède une méthode pour réaliser ce genre d'opération: `rotate`
-
-Voici quelques exemples:
-
-```ruby
-my_array = [1, 2, 3, 4]
-my_array_rotated_to_left = my_array.rotate(1)
-# Result: [2, 3, 4, 1]
-my_array_rotated_to_right = my_array.rotate(-1)
-# Result: [4, 1, 2, 3]
-```
-
-### Mélanger un tableau
-
-Si vous avez besoin de mélanger un tableau, utilisez la méthode `shuffle`. Exemple:
-
-```ruby
-my_array = [1, 2, 3, 4]
-my_array_in_random_order = my_array.shuffle
-# Example result: [2, 3, 4, 1]
-my_array_in_seeded_order = my_array.shuffle(random: Random.new(6))
-# Result: [1, 4, 2, 3]
-```
-
-## Crédits
-
-Image de couverture: [Wiki Media Commons](https://commons.wikimedia.org/wiki/File:Stacks_of_agar_plates.jpg)
-
-Article écrit par Nuri Yuri
-