Ajout des commandes de creation de rencontre/NJ

This commit is contained in:
2026-04-17 16:34:16 +02:00
commit 90911c2e60
232 changed files with 53843 additions and 0 deletions

561
scripts/data/tradeTables.js Normal file
View File

@@ -0,0 +1,561 @@
/**
* MGT2 Commerce Trade Tables
* Source : Mongoose Traveller 2e, pages 235241 (traduction française)
*
* Clés des codes commerciaux (abréviation standard MGT2) :
* Ag Agricole As Astéroïdes Ba Stérile
* De Désert Fl Océans fluides Ga Jardin
* Hi Pop. élevée Ht Haute tech IC Calotte glaciaire
* In Industriel Lo Pop. basse Lt Basse tech
* Na Non-Agricole Ni Non-Industriel Po Pauvre
* Ri Riche Wa Monde aquatique Va Vide
*
* Les zones sont notées : 'ZA' (Zone Ambre) et 'ZR' (Zone Rouge).
*/
/** Tarifs de passage et de fret, par distance en parsecs. */
export const PASSAGE_COSTS = [
{ parsecs: 1, sup: 9000, inter: 6500, eco: 2000, inf: 700, freight: 1000 },
{ parsecs: 2, sup: 14000, inter: 10000, eco: 3000, inf: 1300, freight: 1600 },
{ parsecs: 3, sup: 21000, inter: 14000, eco: 5000, inf: 2200, freight: 2600 },
{ parsecs: 4, sup: 34000, inter: 23000, eco: 8000, inf: 3900, freight: 4400 },
{ parsecs: 5, sup: 60000, inter: 40000, eco: 14000, inf: 7200, freight: 8500 },
{ parsecs: 6, sup: 210000, inter: 130000, eco: 55000, inf: 27000, freight: 32000 },
];
/**
* Table Trafic de passagers.
* Clé = résultat 2D + modificateurs.
* Valeur = formule de dés pour le nombre de passagers (string Roll-compatible).
*/
export const PASSENGER_TRAFFIC = {
1: '0',
2: '1d6',
3: '1d6',
4: '2d6',
5: '2d6',
6: '2d6',
7: '3d6',
8: '3d6',
9: '3d6',
10: '3d6',
11: '4d6',
12: '4d6',
13: '4d6',
14: '5d6',
15: '5d6',
16: '6d6',
17: '7d6',
18: '8d6',
19: '9d6',
20: '10d6',
};
/**
* Table Trafic de cargaison.
* Clé = résultat 2D + modificateurs.
* Valeur = formule de dés pour le nombre de lots.
*/
export const CARGO_TRAFFIC = {
1: '0',
2: '1d6',
3: '1d6',
4: '2d6',
5: '2d6',
6: '3d6',
7: '3d6',
8: '3d6',
9: '4d6',
10: '4d6',
11: '4d6',
12: '5d6',
13: '5d6',
14: '5d6',
15: '6d6',
16: '6d6',
17: '7d6',
18: '8d6',
19: '9d6',
20: '10d6',
};
/**
* Table Prix modifiés.
* Clé = résultat du jet (3D + modificateurs).
* Valeur = { buy: % du prix de base, sell: % du prix de base }.
*/
export const MODIFIED_PRICES = {
'-3': { buy: 300, sell: 10 },
'-2': { buy: 250, sell: 20 },
'-1': { buy: 200, sell: 30 },
'0': { buy: 175, sell: 40 },
'1': { buy: 150, sell: 45 },
'2': { buy: 135, sell: 50 },
'3': { buy: 125, sell: 55 },
'4': { buy: 120, sell: 60 },
'5': { buy: 115, sell: 65 },
'6': { buy: 110, sell: 70 },
'7': { buy: 105, sell: 75 },
'8': { buy: 100, sell: 80 },
'9': { buy: 95, sell: 85 },
'10': { buy: 90, sell: 90 },
'11': { buy: 85, sell: 100 },
'12': { buy: 80, sell: 105 },
'13': { buy: 75, sell: 110 },
'14': { buy: 70, sell: 115 },
'15': { buy: 65, sell: 120 },
'16': { buy: 60, sell: 125 },
'17': { buy: 55, sell: 130 },
'18': { buy: 50, sell: 140 },
'19': { buy: 45, sell: 150 },
'20': { buy: 40, sell: 160 },
'21': { buy: 35, sell: 175 },
'22': { buy: 30, sell: 200 },
'23': { buy: 25, sell: 250 },
'24': { buy: 20, sell: 300 },
'25': { buy: 15, sell: 400 },
};
/** Retourne les pourcentages d'achat/vente pour un résultat de jet donné. */
export function getModifiedPrice(result) {
const clamped = Math.max(-3, Math.min(25, result));
return MODIFIED_PRICES[String(clamped)];
}
/**
* Table des Marchandises (D66).
* D66 1136 : extraites des pages 235241 du livre de règles.
* D66 4166 : à compléter dès réception des pages manquantes.
*
* Structure de chaque entrée :
* d66 {number} Résultat D66 (11, 12, ..., 66)
* name {string} Nom de la marchandise
* availability {string[]} Codes commerciaux requis, ou ['all'] si disponible partout
* tonsDice {string} Formule Roll pour les tonnes disponibles
* basePrice {number} Prix de base en Crédits par tonne
* illegal {boolean} Vrai si illégale universellement
* buyMod {Object} Code commercial → modificateur d'achat
* sellMod {Object} Code commercial → modificateur de vente
*/
export const GOODS_TABLE = [
// ── D66 1116 : Marchandises communes ────────────────────────────────────────
{
d66: 11,
name: 'Électroniques communes',
availability: ['all'],
tonsDice: '2d6*10',
basePrice: 20000,
illegal: false,
buyMod: { In: 2, Ht: 3, Ri: 1 },
sellMod: { Ni: 2, Lt: 1, Po: 1 },
examples: 'Électronique simple, y compris les ordinateurs basiques jusqu\'au NT10',
},
{
d66: 12,
name: 'Produits industriels communs',
availability: ['all'],
tonsDice: '2d6*10',
basePrice: 10000,
illegal: false,
buyMod: { Na: 2, In: 5 },
sellMod: { Ni: 3, Ag: 2 },
examples: 'Composants de machines et pièces détachées pour machines courantes',
},
{
d66: 13,
name: 'Biens manufacturés communs',
availability: ['all'],
tonsDice: '2d6*10',
basePrice: 20000,
illegal: false,
buyMod: { Na: 2, In: 5 },
sellMod: { Ni: 3, Hi: 2 },
examples: 'Appareils ménagers, vêtements, et autres produits manufacturés',
},
{
d66: 14,
name: 'Matières premières communes',
availability: ['all'],
tonsDice: '2d6*20',
basePrice: 5000,
illegal: false,
buyMod: { Ag: 3, Ga: 2 },
sellMod: { In: 2, Po: 2 },
examples: 'Métaux, plastiques, produits chimiques et autres matériaux de base',
},
{
d66: 15,
name: 'Consommables communs',
availability: ['all'],
tonsDice: '2d6*20',
basePrice: 500,
illegal: false,
buyMod: { Ag: 3, Wa: 2, Ga: 1, As: -4 },
sellMod: { As: 1, Fl: 1, IC: 1, Hi: 1 },
examples: 'Nourriture, boissons et autres produits agricoles',
},
{
d66: 16,
name: 'Minéraux communs',
availability: ['all'],
tonsDice: '2d6*20',
basePrice: 1000,
illegal: false,
buyMod: { As: 4 },
sellMod: { In: 3, Ni: 1 },
examples: 'Métaux communs porteurs de minerai',
},
// ── D66 2126 : Marchandises commerciales avancées ───────────────────────────
{
d66: 21,
name: 'Électronique Avancée',
availability: ['In', 'Ht'],
tonsDice: '1d6*5',
basePrice: 100000,
illegal: false,
buyMod: { In: 2, Ht: 3 },
sellMod: { Ni: 1, Ri: 2, As: 3 },
examples: 'Capteurs avancés, ordinateurs et autres produits électroniques jusqu\'au NT15',
},
{
d66: 22,
name: 'Pièces de Machines Avancées',
availability: ['In', 'Ht'],
tonsDice: '1d6*5',
basePrice: 75000,
illegal: false,
buyMod: { In: 2, Ht: 1 },
sellMod: { As: 2, Ni: 1 },
examples: 'Composants de machines et pièces détachées, y compris les composants gravitiques',
},
{
d66: 23,
name: 'Biens Manufacturés Avancés',
availability: ['In', 'Ht'],
tonsDice: '1d6*5',
basePrice: 100000,
illegal: false,
buyMod: { In: 1 },
sellMod: { Hi: 1, Ri: 2 },
examples: 'Appareils et vêtements intégrant des technologies avancées',
},
{
d66: 24,
name: 'Armes Avancées',
availability: ['In', 'Ht'],
tonsDice: '1d6*5',
basePrice: 150000,
illegal: false,
buyMod: { Ht: 2 },
sellMod: { Po: 1, ZA: 2, ZR: 4 },
examples: 'Armes à feu, explosifs, munitions, artillerie et autres armements militaires de pointe',
},
{
d66: 25,
name: 'Véhicules Avancés',
availability: ['In', 'Ht'],
tonsDice: '1d6*5',
basePrice: 180000,
illegal: false,
buyMod: { Ht: 2 },
sellMod: { As: 2, Ri: 2 },
examples: 'Véhicules spatiaux, tank grav, aéro/barges et autres véhicules jusqu\'au NT15',
},
{
d66: 26,
name: 'Biochimiques',
availability: ['Ag', 'Wa'],
tonsDice: '1d6*5',
basePrice: 50000,
illegal: false,
buyMod: { Ag: 1, Wa: 2 },
sellMod: { In: 2 },
examples: 'Cultures bio-organiques, produits chimiques bio-carburants',
},
// ── D66 3136 : Marchandises spéciales ──────────────────────────────────────
{
d66: 31,
name: 'Cristaux & Gemmes',
availability: ['As', 'De', 'IC'],
tonsDice: '1d6*5',
basePrice: 20000,
illegal: false,
buyMod: { As: 2, De: 1, IC: 1 },
sellMod: { In: 3, Ri: 2 },
examples: 'Diamants, gemmes synthétiques ou naturelles',
},
{
d66: 32,
name: 'Cybernétiques',
availability: ['Ht'],
tonsDice: '1d6',
basePrice: 250000,
illegal: false,
buyMod: { Ht: 1 },
sellMod: { As: 1, IC: 1, Ri: 2 },
examples: 'Composants cybernétiques, prothèses',
},
{
d66: 33,
name: 'Animaux Vivants',
availability: ['Ag', 'Ga'],
tonsDice: '1d6*10',
basePrice: 10000,
illegal: false,
buyMod: { Ag: 2 },
sellMod: { Lo: 3 },
examples: 'Animaux de trait, de ferme, ou animaux exotiques',
},
{
d66: 34,
name: 'Consommables de Luxe',
availability: ['Ag', 'Ga', 'Wa'],
tonsDice: '1d6*10',
basePrice: 20000,
illegal: false,
buyMod: { Ag: 2, Wa: 1 },
sellMod: { Ri: 2, Hi: 2 },
examples: 'Nourriture rare, liqueurs fines',
},
{
d66: 35,
name: 'Biens de luxes',
availability: ['Hi'],
tonsDice: '1d6',
basePrice: 200000,
illegal: false,
buyMod: { Hi: 1 },
sellMod: { Ri: 4 },
examples: 'Biens manufacturés rares ou de très haute qualité',
},
{
d66: 36,
name: 'Fournitures Médicales',
availability: ['Ht', 'Hi'],
tonsDice: '1d6*5',
basePrice: 50000,
illegal: false,
buyMod: { Ht: 2 },
sellMod: { In: 2, Po: 1, Ri: 1 },
examples: 'Équipements de diagnostic, médicaments de base, technologies de clonage',
},
// ── D66 4146 : Marchandises spécialisées ────────────────────────────────────
{
d66: 41,
name: 'Pétrochimiques',
availability: ['De', 'Fl', 'IC', 'Wa'],
tonsDice: '1d6*10',
basePrice: 10000,
illegal: false,
buyMod: { De: 2 },
sellMod: { In: 2, Ag: 1, Lt: 2 },
examples: 'Essences, carburants liquides',
},
{
d66: 42,
name: 'Produits Pharmaceutiques',
availability: ['As', 'De', 'Hi', 'Wa'],
tonsDice: '1d6',
basePrice: 100000,
illegal: false,
buyMod: { As: 2, Hi: 1 },
sellMod: { Ri: 2, Lt: 1 },
examples: 'Médicaments, fournitures médicales, anagathiques, médistases ou tachymèdes',
},
{
d66: 43,
name: 'Polymères',
availability: ['In'],
tonsDice: '1d6*10',
basePrice: 7000,
illegal: false,
buyMod: { In: 1 },
sellMod: { Ri: 2, Ni: 1 },
examples: 'Plastiques et autres matériaux synthétiques',
},
{
d66: 44,
name: 'Métaux Précieux',
availability: ['As', 'De', 'IC', 'Fl'],
tonsDice: '1d6',
basePrice: 50000,
illegal: false,
buyMod: { As: 3, De: 1, IC: 2 },
sellMod: { Ri: 3, In: 2, Ht: 1 },
examples: 'Or, argent, platine, éléments rares',
},
{
d66: 45,
name: 'Matériaux radioactifs',
availability: ['As', 'De', 'Lo'],
tonsDice: '1d6',
basePrice: 1000000,
illegal: false,
buyMod: { As: 2, Lo: 2 },
sellMod: { In: 3, Ht: 1, Ni: -2, Ag: -3 },
examples: 'Uranium, plutonium, unobtanium, éléments rares',
},
{
d66: 46,
name: 'Robots',
availability: ['In'],
tonsDice: '1d6*5',
basePrice: 400000,
illegal: false,
buyMod: { In: 1 },
sellMod: { Ag: 2, Ht: 1 },
examples: 'Robots industriels et personnels, drones',
},
// ── D66 5156 : Marchandises naturelles et véhicules ─────────────────────────
{
d66: 51,
name: 'Épices',
availability: ['Ga', 'De', 'Wa'],
tonsDice: '1d6*10',
basePrice: 6000,
illegal: false,
buyMod: { De: 2 },
sellMod: { Hi: 2, Ri: 3, Po: 3 },
examples: 'Conservateurs, additifs alimentaires de luxe, drogues naturelles',
},
{
d66: 52,
name: 'Textiles',
availability: ['Ag', 'Ni'],
tonsDice: '1d6*20',
basePrice: 3000,
illegal: false,
buyMod: { Ag: 7 },
sellMod: { Hi: 3, Na: 2 },
examples: 'Vêtements et tissus',
},
{
d66: 53,
name: 'Minéraux Rares',
availability: ['As', 'IC'],
tonsDice: '1d6*20',
basePrice: 5000,
illegal: false,
buyMod: { As: 4 },
sellMod: { In: 3, Ni: 1 },
examples: 'Minerai contenant des métaux précieux ou de valeur',
},
{
d66: 54,
name: 'Matières Premières Rares',
availability: ['Ag', 'De', 'Wa'],
tonsDice: '1d6*10',
basePrice: 20000,
illegal: false,
buyMod: { Ag: 2, Wa: 1 },
sellMod: { In: 2, Ht: 1 },
examples: 'Métaux précieux comme le titane, éléments rares',
},
{
d66: 55,
name: 'Bois',
availability: ['Ag', 'Ga'],
tonsDice: '1d6*20',
basePrice: 1000,
illegal: false,
buyMod: { Ag: 6 },
sellMod: { Ri: 2, In: 1 },
examples: 'Bois rares ou précieux et extraits végétaux',
},
{
d66: 56,
name: 'Véhicules',
availability: ['In', 'Ht'],
tonsDice: '1d6*10',
basePrice: 15000,
illegal: false,
buyMod: { In: 2, Ht: 1 },
sellMod: { Ni: 2, Hi: 1 },
examples: 'Véhicules à roues, chenilles ou gravitationnels jusqu\'au NT10',
},
// ── D66 6166 : Marchandises illégales ───────────────────────────────────────
{
d66: 61,
name: 'Biochimiques (Illégal)',
availability: ['Ag', 'Wa'],
tonsDice: '1d6*5',
basePrice: 50000,
illegal: true,
buyMod: { Wa: 2 },
sellMod: { In: 6 },
examples: 'Produits chimiques dangereux, extraits d\'espèces menacées',
},
{
d66: 62,
name: 'Cybernétiques (Illégal)',
availability: ['Ht'],
tonsDice: '1d6',
basePrice: 250000,
illegal: true,
buyMod: { Ht: 1 },
sellMod: { As: 4, IC: 4, Ri: 8, ZA: 6, ZR: 6 },
examples: 'Cybernétique de combat, améliorations illégales',
},
{
d66: 63,
name: 'Drogues (Illégal)',
availability: ['As', 'De', 'Hi', 'Wa'],
tonsDice: '1d6',
basePrice: 100000,
illegal: true,
buyMod: { As: 1, De: 1, Ga: 1, Wa: 1 },
sellMod: { Ri: 6, Hi: 6 },
examples: 'Drogues addictives, drogues de combat',
},
{
d66: 64,
name: 'Biens de luxe (Illégal)',
availability: ['Ag', 'Ga', 'Wa'],
tonsDice: '1d6',
basePrice: 50000,
illegal: true,
buyMod: { Ag: 2, Wa: 1 },
sellMod: { Ri: 6, Hi: 4 },
examples: 'Produits de luxes décadents ou addictifs',
},
{
d66: 65,
name: 'Armes (Illégal)',
availability: ['In', 'Ht'],
tonsDice: '1d6*5',
basePrice: 150000,
illegal: true,
buyMod: { Ht: 2 },
sellMod: { Po: 6, ZA: 8, ZR: 10 },
examples: 'Armes de destruction massive, armements navals',
},
{
d66: 66,
name: 'Exotiques',
availability: ['all'],
tonsDice: '1d6',
basePrice: 0, // prix libre, à déterminer par l'Arbitre
illegal: false,
buyMod: {},
sellMod: {},
examples: 'Reliques xénos, prototypes technologiques, plantes ou animaux uniques, trésors inestimables. Prix et disponibilité à la discrétion de l\'Arbitre.',
},
];
/** Codes commerciaux reconnus par les tables de marchandises. */
export const TRADE_CODES = ['Ag','As','Ba','De','Fl','Ga','Hi','Ht','IC','In','Lo','Lt','Na','Ni','Po','Ri','Wa','Va'];
/** Catégories de passage (labels français). */
export const PASSAGE_CATEGORIES = {
sup: 'Supérieur',
inter: 'Intermédiaire',
eco: 'Éco',
inf: 'Inférieur',
};
/** Tailles de lots de cargaison et leurs formules. */
export const CARGO_LOT_SIZES = {
major: { label: 'Lot majeur', formula: '1d6*10' },
minor: { label: 'Lot mineur', formula: '1d6*5' },
access: { label: 'Lot accessoire', formula: '1d6' },
};