It happens on collison with 'Piques'.
And because you have multiple 'Piques' crowed on a dense place, Perso (player) is colliding with more then one spike in a very short time.
Each collission triggers a call to the 'mort' function.
In short: for each spike it collides with (almost at the same time) it makes a new player. And it multiplies because you are getting more and more players.
Lose all the 'trigger once' for now.
Give Perso an instance boolean 'IamDeadAllreadyDontBother' (something like that, but in your language) .. false
(In one event, 2 condtions)
On Perso collission with Piques
Perso boolean 'IamDeadAllreadyDontBother' is set ? (inverted, so if not set)
(actions)
set boolean 'IamDeadAllreadyDontBother' to true
call mort
In the the function "SpawnPerso" add the actions
Wait 0.5
set boolean 'IamDeadAllreadyDontBother' to false
I think that should do it .. code wise.
But, at the same time i think you better make a spike-sprite with animations for the colors, and frames for the amount of spikes (watch the collission polygones). Those spikes you bring in the layout (not even on runtime) only once anyway, so that should not be that much of work. Set default animation and frame in the instance properties in the layout editor.
Alternative. Those two suggestions are ways to avoid the problem.
Bur After all, your solution (fixing it after the facts the way you did) is also not that bad. Is does not harm and is not messing up code. So in fact, you solved it allready, and i understand the cause, every one happy.