Aller au contenu

Générer des armes

tilttek/heraldry

CoatGenerator::generate() tire un écu d'un Generator\Seed :

use Tilttek\Heraldry\Generator\CoatGenerator;
use Tilttek\Heraldry\Generator\Seed;

$seed = Seed::generate();              // 32 bytes from the system's secure source
$hex = $seed->hex();                   // 64 hexadecimal digits, to keep with the arms

$coat = new CoatGenerator()->generate(Seed::fromHex($hex));

Reproductible

Le germe alimente un générateur Xoshiro256** avec son SHA-256, et chaque tirage en vient dans un ordre fixe : le même germe donne le même écu sur n'importe quel serveur et n'importe quelle version prise en charge de PHP. Le germe vient du serveur : un client qui envoie un germe ne fait que demander des armes déjà tirées. Seed::fromHex() prend 64 chiffres hexadécimaux et lance Exception\InvalidSeed pour tout le reste.

Ce qu'il tire

PartieÀ quelle fréquence
Un champ uni3 écus sur 5 ; les métaux et les couleurs deux fois plus probables que les fourrures
Un champ divisé2 écus sur 5, entre un métal ou une fourrure et une couleur, dans un ordre ou dans l'autre
Une pièceun peu plus de la moitié des écus
Des meubles sans pièce85 % de ces écus, de un à trois ; trois groupes de deux ou trois sur dix prennent une disposition
Des meubles avec une piècela moitié de ces écus, sur elle ou à côté selon ce que la pièce permet
Une brisureun écu sur dix

Chaque écu respecte la règle de couleur ; sur un champ divisé, l'émail de ce qui s'y trouve n'est aucun de ceux du champ, et ce qui est côte à côte ne partage jamais un émail. new CoatGenerator(furs: false) laisse l'hermine et le vair hors des champs.