Ajout des commandes de creation de rencontre/NJ
This commit is contained in:
475
scripts/data/npcTables.js
Normal file
475
scripts/data/npcTables.js
Normal file
@@ -0,0 +1,475 @@
|
||||
export const NPC_RELATIONS = {
|
||||
ally: {
|
||||
label: 'Allié',
|
||||
summary: 'Prêt à prendre des risques pour aider les Voyageurs.',
|
||||
},
|
||||
contact: {
|
||||
label: 'Contact',
|
||||
summary: 'Aide limitée, souvent utile pour des informations ou des introductions.',
|
||||
},
|
||||
rival: {
|
||||
label: 'Rival',
|
||||
summary: 'Adversaire récurrent, préfère gêner ou humilier les Voyageurs.',
|
||||
},
|
||||
enemy: {
|
||||
label: 'Ennemi',
|
||||
summary: 'Opposant durable prêt à aller plus loin que le Rival.',
|
||||
},
|
||||
};
|
||||
|
||||
export const EXPERIENCE_PROFILES = [
|
||||
{
|
||||
key: 'noncombatant-blue',
|
||||
category: 'Non-combattant',
|
||||
tier: 'Bleu',
|
||||
label: 'Non-combattant bleu',
|
||||
skillLevel: 0,
|
||||
characteristicBonuses: [],
|
||||
skills: ['Conduire/aéronef'],
|
||||
},
|
||||
{
|
||||
key: 'combatant-blue',
|
||||
category: 'Combattant',
|
||||
tier: 'Bleu',
|
||||
label: 'Combattant bleu',
|
||||
skillLevel: 0,
|
||||
characteristicBonuses: [],
|
||||
skills: ['Conduire/aéronef', 'Combat Arme', 'Mêlée'],
|
||||
},
|
||||
{
|
||||
key: 'noncombatant-average',
|
||||
category: 'Non-combattant',
|
||||
tier: 'Moyen',
|
||||
label: 'Non-combattant moyen',
|
||||
skillLevel: 1,
|
||||
characteristicBonuses: ['+1'],
|
||||
skills: ['Conduire/aéronef', 'Profession'],
|
||||
},
|
||||
{
|
||||
key: 'combatant-average',
|
||||
category: 'Combattant',
|
||||
tier: 'Moyen',
|
||||
label: 'Combattant moyen',
|
||||
skillLevel: 1,
|
||||
characteristicBonuses: ['+1'],
|
||||
skills: ['Conduire/aéronef', 'Combat Arme', 'Mêlée', 'Reconnaissance'],
|
||||
},
|
||||
{
|
||||
key: 'noncombatant-experienced',
|
||||
category: 'Non-combattant',
|
||||
tier: 'Expérimenté',
|
||||
label: 'Non-combattant expérimenté',
|
||||
skillLevel: 2,
|
||||
characteristicBonuses: ['+1', '+2'],
|
||||
skills: ['Administration', 'Conduire/aéronef', 'Profession'],
|
||||
},
|
||||
{
|
||||
key: 'combatant-experienced',
|
||||
category: 'Combattant',
|
||||
tier: 'Expérimenté',
|
||||
label: 'Combattant expérimenté',
|
||||
skillLevel: 2,
|
||||
characteristicBonuses: ['+1', '+2'],
|
||||
skills: ['Conduire/aéronef', 'Combat Arme', 'Armes lourdes', 'Mêlée', 'Reconnaissance'],
|
||||
},
|
||||
{
|
||||
key: 'noncombatant-elite',
|
||||
category: 'Non-combattant',
|
||||
tier: 'Élite',
|
||||
label: 'Non-combattant élite',
|
||||
skillLevel: 3,
|
||||
characteristicBonuses: ['+1', '+2', '+3'],
|
||||
skills: ['Administration', 'Conduire/aéronef', 'Enquêter', 'Profession'],
|
||||
},
|
||||
{
|
||||
key: 'combatant-elite',
|
||||
category: 'Combattant',
|
||||
tier: 'Élite',
|
||||
label: 'Combattant élite',
|
||||
skillLevel: 3,
|
||||
characteristicBonuses: ['+1', '+2', '+3'],
|
||||
skills: ['Conduire/aéronef', 'Combat Arme', 'Armes lourdes', 'Mêlée', 'Reconnaissance', 'Tactique'],
|
||||
},
|
||||
];
|
||||
|
||||
export const ALLIES_ENEMIES_TABLE = [
|
||||
{ d66: 11, text: 'Officier de marine' },
|
||||
{ d66: 12, text: 'Diplomate impérial' },
|
||||
{ d66: 13, text: 'Marchand véreux' },
|
||||
{ d66: 14, text: 'Médecin' },
|
||||
{ d66: 15, text: 'Scientifique excentrique' },
|
||||
{ d66: 16, text: 'Mercenaire' },
|
||||
{ d66: 21, text: 'Interprète célèbre' },
|
||||
{ d66: 22, text: 'Xéno' },
|
||||
{ d66: 23, text: 'Franc-Marchand' },
|
||||
{ d66: 24, text: 'Explorateur' },
|
||||
{ d66: 25, text: 'Capitaine de vaisseau' },
|
||||
{ d66: 26, text: 'Cadre de corpo' },
|
||||
{ d66: 31, text: 'Chercheur' },
|
||||
{ d66: 32, text: 'Attaché culturel' },
|
||||
{ d66: 33, text: 'Chef religieux' },
|
||||
{ d66: 34, text: 'Conspirateur' },
|
||||
{ d66: 35, text: 'Noble riche' },
|
||||
{ d66: 36, text: 'Intelligence artificielle' },
|
||||
{ d66: 41, text: 'Noble oisif' },
|
||||
{ d66: 42, text: 'Gouverneur planétaire' },
|
||||
{ d66: 43, text: 'Joueur invétéré' },
|
||||
{ d66: 44, text: 'Journaliste en croisade' },
|
||||
{ d66: 45, text: "Cultiste de l'apocalypse" },
|
||||
{ d66: 46, text: 'Agent corpo' },
|
||||
{ d66: 51, text: 'Criminel mafieux' },
|
||||
{ d66: 52, text: 'Gouverneur militaire' },
|
||||
{ d66: 53, text: "Quartier-maître de l'armée" },
|
||||
{ d66: 54, text: 'Enquêteur privé' },
|
||||
{ d66: 55, text: 'Amiral à la retraite' },
|
||||
{ d66: 56, text: 'Ambassadeur xéno' },
|
||||
{ d66: 61, text: 'Contrebandier' },
|
||||
{ d66: 62, text: "Administrateur de l'astroport" },
|
||||
{ d66: 63, text: "Inspecteur d'armement" },
|
||||
{ d66: 64, text: "Homme d'État âgé" },
|
||||
{ d66: 65, text: 'Seigneur de guerre planétaire' },
|
||||
{ d66: 66, text: 'Agent impérial' },
|
||||
];
|
||||
|
||||
export const CHARACTER_QUIRKS_TABLE = [
|
||||
{ d66: 11, text: 'Loyal' },
|
||||
{ d66: 12, text: 'Distrait par des soucis' },
|
||||
{ d66: 13, text: 'Dettes envers des criminels' },
|
||||
{ d66: 14, text: 'Fait de très mauvaises blagues' },
|
||||
{ d66: 15, text: 'Trahira les personnages' },
|
||||
{ d66: 16, text: 'Agressif' },
|
||||
{ d66: 21, text: 'A des alliés secrets' },
|
||||
{ d66: 22, text: "Utilisateur secret d'anagathiques" },
|
||||
{ d66: 23, text: 'À la recherche de quelque chose' },
|
||||
{ d66: 24, text: 'Serviable' },
|
||||
{ d66: 25, text: 'Subit des pertes de mémoire' },
|
||||
{ d66: 26, text: 'Veut engager les Voyageurs' },
|
||||
{ d66: 31, text: 'A des contacts utiles' },
|
||||
{ d66: 32, text: 'Artistique' },
|
||||
{ d66: 33, text: 'Facile à tromper' },
|
||||
{ d66: 34, text: 'Possède une laideur inhabituelle' },
|
||||
{ d66: 35, text: 'Inquiet de la situation présente' },
|
||||
{ d66: 36, text: 'Montre des images de ses enfants' },
|
||||
{ d66: 41, text: 'Répand des rumeurs' },
|
||||
{ d66: 42, text: 'Très provincial' },
|
||||
{ d66: 43, text: 'Ivrogne ou toxicomane' },
|
||||
{ d66: 44, text: 'Informateur du gouvernement' },
|
||||
{ d66: 45, text: 'Prend un Voyageur pour un autre' },
|
||||
{ d66: 46, text: 'Possède une technologie exceptionnellement avancée' },
|
||||
{ d66: 51, text: 'Possède une beauté exceptionnelle' },
|
||||
{ d66: 52, text: 'Espionne les Voyageurs' },
|
||||
{ d66: 53, text: 'Membre de la SAV' },
|
||||
{ d66: 54, text: 'Secrètement hostile aux Voyageurs' },
|
||||
{ d66: 55, text: "Veut emprunter de l'argent" },
|
||||
{ d66: 56, text: 'Est convaincu que les Voyageurs sont dangereux' },
|
||||
{ d66: 61, text: 'Impliqué dans des intrigues politiques' },
|
||||
{ d66: 62, text: 'A un dangereux secret' },
|
||||
{ d66: 63, text: 'Veut quitter la planète dans les meilleurs délais' },
|
||||
{ d66: 64, text: 'Attiré par un des Voyageurs' },
|
||||
{ d66: 65, text: "Hors-monde (originaire d'un autre monde)" },
|
||||
{ d66: 66, text: 'Doué de télépathie ou autre particularité exceptionnelle' },
|
||||
];
|
||||
|
||||
export const RANDOM_CLIENT_TABLE = [
|
||||
{ d66: 11, text: 'Assassin' },
|
||||
{ d66: 12, text: 'Contrebandier' },
|
||||
{ d66: 13, text: 'Terroriste' },
|
||||
{ d66: 14, text: 'Escroc' },
|
||||
{ d66: 15, text: 'Voleur' },
|
||||
{ d66: 16, text: 'Révolutionnaire' },
|
||||
{ d66: 21, text: 'Notaire' },
|
||||
{ d66: 22, text: 'Administrateur' },
|
||||
{ d66: 23, text: 'Maire' },
|
||||
{ d66: 24, text: 'Noble mineur' },
|
||||
{ d66: 25, text: 'Médecin' },
|
||||
{ d66: 26, text: 'Chef de tribu' },
|
||||
{ d66: 31, text: 'Diplomate' },
|
||||
{ d66: 32, text: 'Courrier' },
|
||||
{ d66: 33, text: 'Espion' },
|
||||
{ d66: 34, text: 'Ambassadeur' },
|
||||
{ d66: 35, text: 'Noble' },
|
||||
{ d66: 36, text: 'Officier de police' },
|
||||
{ d66: 41, text: 'Marchand' },
|
||||
{ d66: 42, text: 'Franc-Marchand' },
|
||||
{ d66: 43, text: 'Courtier' },
|
||||
{ d66: 44, text: 'Cadre de corpo' },
|
||||
{ d66: 45, text: 'Agent de corpo' },
|
||||
{ d66: 46, text: 'Financier' },
|
||||
{ d66: 51, text: 'Ceinturien' },
|
||||
{ d66: 52, text: 'Chercheur' },
|
||||
{ d66: 53, text: 'Officier de Marine' },
|
||||
{ d66: 54, text: 'Pilote' },
|
||||
{ d66: 55, text: "Administrateur d'astroport" },
|
||||
{ d66: 56, text: 'Éclaireur' },
|
||||
{ d66: 61, text: 'Xéno' },
|
||||
{ d66: 62, text: 'Playboy' },
|
||||
{ d66: 63, text: 'Passager clandestin' },
|
||||
{ d66: 64, text: 'Membre de la famille' },
|
||||
{ d66: 65, text: "Agent d'une puissance étrangère" },
|
||||
{ d66: 66, text: 'Agent impérial' },
|
||||
];
|
||||
|
||||
export const RANDOM_MISSION_TABLE = [
|
||||
{ d66: 11, text: 'Assassiner une cible' },
|
||||
{ d66: 12, text: 'Piéger une cible' },
|
||||
{ d66: 13, text: 'Détruire une cible' },
|
||||
{ d66: 14, text: 'Voler une cible' },
|
||||
{ d66: 15, text: 'Aide pour un cambriolage' },
|
||||
{ d66: 16, text: 'Arrêter un cambriolage' },
|
||||
{ d66: 21, text: 'Récupérer des données ou un objet dans un lieu sécurisé' },
|
||||
{ d66: 22, text: 'Discréditer une cible' },
|
||||
{ d66: 23, text: 'Retrouver une cargaison disparue' },
|
||||
{ d66: 24, text: 'Retrouver une personne perdue' },
|
||||
{ d66: 25, text: 'Tromper une cible' },
|
||||
{ d66: 26, text: 'Saboter une cible' },
|
||||
{ d66: 31, text: 'Convoyer des marchandises' },
|
||||
{ d66: 32, text: 'Convoyer une personne' },
|
||||
{ d66: 33, text: 'Convoyer des données' },
|
||||
{ d66: 34, text: 'Transporter secrètement des marchandises' },
|
||||
{ d66: 35, text: 'Transporter rapidement des marchandises' },
|
||||
{ d66: 36, text: 'Transporter des marchandises dangereuses' },
|
||||
{ d66: 41, text: 'Enquêter sur un délit' },
|
||||
{ d66: 42, text: 'Enquêter sur un vol' },
|
||||
{ d66: 43, text: 'Enquêter sur un meurtre' },
|
||||
{ d66: 44, text: 'Enquêter sur un mystère' },
|
||||
{ d66: 45, text: 'Enquêter sur une cible' },
|
||||
{ d66: 46, text: 'Enquêter sur un événement' },
|
||||
{ d66: 51, text: 'Participer à une expédition' },
|
||||
{ d66: 52, text: 'Enquête sur une planète' },
|
||||
{ d66: 53, text: 'Explorer un nouveau système' },
|
||||
{ d66: 54, text: 'Explorer une ruine' },
|
||||
{ d66: 55, text: 'Récupérer un vaisseau' },
|
||||
{ d66: 56, text: 'Capturer une créature' },
|
||||
{ d66: 61, text: 'Détourner un vaisseau' },
|
||||
{ d66: 62, text: 'Divertir un noble' },
|
||||
{ d66: 63, text: 'Protéger une cible' },
|
||||
{ d66: 64, text: 'Sauver une cible' },
|
||||
{ d66: 65, text: 'Aider une cible' },
|
||||
{ d66: 66, text: "Il s'agit d'un piège – le Client a l'intention de trahir le Voyageur" },
|
||||
];
|
||||
|
||||
export const RANDOM_TARGET_TABLE = [
|
||||
{ d66: 11, text: 'Marchandises communes' },
|
||||
{ d66: 12, text: 'Marchandises communes' },
|
||||
{ d66: 13, text: 'Marchandises (table page 240)', special: 'trade-goods' },
|
||||
{ d66: 14, text: 'Marchandises (table page 240)', special: 'trade-goods' },
|
||||
{ d66: 15, text: 'Marchandises illicites', special: 'illegal-goods' },
|
||||
{ d66: 16, text: 'Marchandises illicites', special: 'illegal-goods' },
|
||||
{ d66: 21, text: 'Données informatiques' },
|
||||
{ d66: 22, text: 'Artefact xéno' },
|
||||
{ d66: 23, text: 'Effets personnels' },
|
||||
{ d66: 24, text: "Œuvre d'art" },
|
||||
{ d66: 25, text: 'Artefact historique' },
|
||||
{ d66: 26, text: 'Arme' },
|
||||
{ d66: 31, text: 'Astroport' },
|
||||
{ d66: 32, text: 'Base astéroïde' },
|
||||
{ d66: 33, text: 'Ville' },
|
||||
{ d66: 34, text: 'Station de recherche' },
|
||||
{ d66: 35, text: 'Bar ou boîte de nuit' },
|
||||
{ d66: 36, text: 'Installation médicale' },
|
||||
{ d66: 41, text: 'Client aléatoire', special: 'client' },
|
||||
{ d66: 42, text: 'Client aléatoire', special: 'client' },
|
||||
{ d66: 43, text: 'Client aléatoire', special: 'client' },
|
||||
{ d66: 44, text: 'Allié ou ennemi', special: 'ally-enemy' },
|
||||
{ d66: 45, text: 'Allié ou ennemi', special: 'ally-enemy' },
|
||||
{ d66: 46, text: 'Allié ou ennemi', special: 'ally-enemy' },
|
||||
{ d66: 51, text: 'Gouvernement local' },
|
||||
{ d66: 52, text: 'Gouvernement planétaire' },
|
||||
{ d66: 53, text: 'Corpo' },
|
||||
{ d66: 54, text: 'Service de renseignement impérial' },
|
||||
{ d66: 55, text: 'Criminel mafieux' },
|
||||
{ d66: 56, text: 'Gang criminel' },
|
||||
{ d66: 61, text: 'Franc-Marchand' },
|
||||
{ d66: 62, text: 'Yacht' },
|
||||
{ d66: 63, text: 'Transporteur de cargaison' },
|
||||
{ d66: 64, text: 'Cotre de police' },
|
||||
{ d66: 65, text: 'Station spatiale' },
|
||||
{ d66: 66, text: 'Vaisseau de guerre' },
|
||||
];
|
||||
|
||||
export const RANDOM_OPPOSITION_TABLE = [
|
||||
{ d66: 11, text: 'Animaux' },
|
||||
{ d66: 12, text: 'Gros animaux' },
|
||||
{ d66: 13, text: 'Bandits et voleurs' },
|
||||
{ d66: 14, text: 'Paysans craintifs' },
|
||||
{ d66: 15, text: 'Autorités locales' },
|
||||
{ d66: 16, text: 'Seigneur local' },
|
||||
{ d66: 21, text: 'Criminels – voyous ou corsaires' },
|
||||
{ d66: 22, text: 'Criminels – voleurs ou saboteurs' },
|
||||
{ d66: 23, text: 'Police – forces de sécurité ordinaires' },
|
||||
{ d66: 24, text: 'Police – inspecteurs et détectives' },
|
||||
{ d66: 25, text: 'Corpo – agents' },
|
||||
{ d66: 26, text: 'Corpo – juridique' },
|
||||
{ d66: 31, text: "Sécurité de l'astroport" },
|
||||
{ d66: 32, text: 'Marines impériaux' },
|
||||
{ d66: 33, text: 'Corpo interstellaire' },
|
||||
{ d66: 34, text: 'Xéno – citoyen privé ou corpo' },
|
||||
{ d66: 35, text: 'Xéno – gouvernement' },
|
||||
{ d66: 36, text: 'Voyageurs spatiaux ou vaisseau rival' },
|
||||
{ d66: 41, text: "La cible est dans l'espace profond" },
|
||||
{ d66: 42, text: 'La cible est en orbite' },
|
||||
{ d66: 43, text: 'Conditions météorologiques défavorables' },
|
||||
{ d66: 44, text: 'Organismes dangereux ou radiations' },
|
||||
{ d66: 45, text: 'La cible se trouve dans une région dangereuse' },
|
||||
{ d66: 46, text: 'La cible se trouve dans une zone restreinte' },
|
||||
{ d66: 51, text: 'La cible est sous observation électronique' },
|
||||
{ d66: 52, text: 'Robots ou navires de garde hostiles' },
|
||||
{ d66: 53, text: 'Identification biométrique requise' },
|
||||
{ d66: 54, text: 'Défaillance mécanique ou piratage informatique' },
|
||||
{ d66: 55, text: 'Les Voyageurs sont sous surveillance' },
|
||||
{ d66: 56, text: 'Manque de carburant ou de munitions' },
|
||||
{ d66: 61, text: 'Enquête de police' },
|
||||
{ d66: 62, text: 'Obstacles juridiques' },
|
||||
{ d66: 63, text: 'Noblesse' },
|
||||
{ d66: 64, text: 'Fonctionnaires du gouvernement' },
|
||||
{ d66: 65, text: 'La cible est protégée par un tiers' },
|
||||
{ d66: 66, text: 'Otages' },
|
||||
];
|
||||
|
||||
export const STARPORT_ENCOUNTERS_TABLE = [
|
||||
{ d66: 11, text: "Robot d'entretien au travail" },
|
||||
{ d66: 12, text: "Arrivée ou départ d'un vaisseau marchand" },
|
||||
{ d66: 13, text: "Le capitaine s'insurge contre les prix du carburant" },
|
||||
{ d66: 14, text: "Une nouvelle sur l'activité de pirates s’affiche sur un écran de l’astroport et attire la foule" },
|
||||
{ d66: 15, text: "Un employé qui s'ennuie rend la vie difficile aux Voyageurs" },
|
||||
{ d66: 16, text: 'Un marchand local avec une cargaison à transporter cherche un vaisseau' },
|
||||
{ d66: 21, text: "Un dissident tente de demander l'asile aux autorités planétaires" },
|
||||
{ d66: 22, text: 'Des marchands Hors-monde discutent avec des négociants locaux' },
|
||||
{ d66: 23, text: "Un technicien réparant le système informatique d'astroport" },
|
||||
{ d66: 24, text: 'Un journaliste demande des nouvelles du Hors-monde' },
|
||||
{ d66: 25, text: 'Spectacle culturel insolite' },
|
||||
{ d66: 26, text: 'Un Client se dispute avec un autre groupe de Voyageurs' },
|
||||
{ d66: 31, text: "Arrivée ou départ d'un vaisseau militaire" },
|
||||
{ d66: 32, text: "Manifestation à l'extérieur de l'astroport" },
|
||||
{ d66: 33, text: 'Des prisonniers évadés implorent un passage vers le Hors-monde' },
|
||||
{ d66: 34, text: "Bazar improvisé d'objets bizarres" },
|
||||
{ d66: 35, text: 'Patrouille de sécurité' },
|
||||
{ d66: 36, text: 'Xéno inhabituel' },
|
||||
{ d66: 41, text: 'Des marchands proposent des pièces détachées et des fournitures à prix réduits.' },
|
||||
{ d66: 42, text: 'Un chantier de réparation prend feu' },
|
||||
{ d66: 43, text: "Arrivée ou départ d'un vaisseau spatial de type paquebot" },
|
||||
{ d66: 44, text: "Un robot serviteur propose de guider les Voyageurs dans l'astroport." },
|
||||
{ d66: 45, text: "Des marchands d'un système lointain vendant d'étranges curiosités" },
|
||||
{ d66: 46, text: "Un vieux Ceinturien infirme fait la manche en se plaignant que des drones ont pris son travail." },
|
||||
{ d66: 51, text: 'Le Client offre un emploi aux Voyageurs', followUp: 'client-mission' },
|
||||
{ d66: 52, text: "Passager à la recherche d'un vaisseau" },
|
||||
{ d66: 53, text: 'Des pèlerins religieux tentent de convertir les Voyageurs' },
|
||||
{ d66: 54, text: "Arrivée ou départ d'un transporteur de marchandises" },
|
||||
{ d66: 55, text: "Arrivée ou départ d’un vaisseau Éclaireur" },
|
||||
{ d66: 56, text: 'Des marchandises illégales ou dangereuses sont saisies' },
|
||||
{ d66: 61, text: 'Un pickpocket tente de voler les Voyageurs' },
|
||||
{ d66: 62, text: "Une bande d'ivrognes cherche la bagarre" },
|
||||
{ d66: 63, text: 'Des fonctionnaires enquêtent sur les Voyageurs' },
|
||||
{ d66: 64, text: 'Inspection de sécurité aléatoire des Voyageurs et de leurs bagages' },
|
||||
{ d66: 65, text: "L'astroport est temporairement fermé pour des raisons de sécurité" },
|
||||
{ d66: 66, text: "Accostage d'urgence d'un vaisseau endommagé" },
|
||||
];
|
||||
|
||||
export const RURAL_ENCOUNTERS_TABLE = [
|
||||
{ d66: 11, text: 'Animal sauvage' },
|
||||
{ d66: 12, text: 'Robots agricoles' },
|
||||
{ d66: 13, text: 'Un drone pulvérisateur survole la région' },
|
||||
{ d66: 14, text: "Réparation d'un robot agricole endommagé" },
|
||||
{ d66: 15, text: 'Petite communauté isolée' },
|
||||
{ d66: 16, text: 'Groupe de chasseurs nobles' },
|
||||
{ d66: 21, text: 'Animal sauvage' },
|
||||
{ d66: 22, text: "Terrain d'atterrissage local" },
|
||||
{ d66: 23, text: 'Enfant perdu' },
|
||||
{ d66: 24, text: 'Caravane marchande itinérante' },
|
||||
{ d66: 25, text: 'Convoi de marchandises' },
|
||||
{ d66: 26, text: 'Poursuite policière' },
|
||||
{ d66: 31, text: 'Animal sauvage' },
|
||||
{ d66: 32, text: 'Zone blanche de télécommunications' },
|
||||
{ d66: 33, text: 'Patrouille de sécurité' },
|
||||
{ d66: 34, text: 'Installation militaire' },
|
||||
{ d66: 35, text: 'Bar ou relais' },
|
||||
{ d66: 36, text: 'Vaisseau spatial échoué' },
|
||||
{ d66: 41, text: 'Animal sauvage' },
|
||||
{ d66: 42, text: 'Petite communauté – lieu de vie tranquille' },
|
||||
{ d66: 43, text: 'Petite communauté – sur une route commerciale' },
|
||||
{ d66: 44, text: 'Petite communauté – festival en cours' },
|
||||
{ d66: 45, text: 'Petite communauté en danger' },
|
||||
{ d66: 46, text: "Une petite communauté qui n'est pas ce qu'elle semble être" },
|
||||
{ d66: 51, text: 'Animal sauvage' },
|
||||
{ d66: 52, text: 'Conditions météorologiques inhabituelles' },
|
||||
{ d66: 53, text: 'Terrain difficile' },
|
||||
{ d66: 54, text: 'Créature inhabituelle' },
|
||||
{ d66: 55, text: 'Ferme isolée – accueillante' },
|
||||
{ d66: 56, text: 'Ferme isolée – hostile' },
|
||||
{ d66: 61, text: 'Animal sauvage' },
|
||||
{ d66: 62, text: 'Villa privée' },
|
||||
{ d66: 63, text: 'Monastère ou refuge' },
|
||||
{ d66: 64, text: 'Ferme expérimentale' },
|
||||
{ d66: 65, text: 'Structure en ruine' },
|
||||
{ d66: 66, text: 'Centre de recherche' },
|
||||
];
|
||||
|
||||
export const URBAN_ENCOUNTERS_TABLE = [
|
||||
{ d66: 11, text: 'Émeute de rue en cours' },
|
||||
{ d66: 12, text: 'Les Voyageurs passent devant un charmant restaurant' },
|
||||
{ d66: 13, text: 'Marchand de produits illégaux' },
|
||||
{ d66: 14, text: 'Dispute en public' },
|
||||
{ d66: 15, text: 'Changement soudain de temps' },
|
||||
{ d66: 16, text: "L’aide des Voyageurs est sollicitée" },
|
||||
{ d66: 21, text: 'Les Voyageurs passent devant un bar ou un pub' },
|
||||
{ d66: 22, text: 'Les Voyageurs passent devant un théâtre ou un autre lieu de divertissement' },
|
||||
{ d66: 23, text: 'Boutique de curiosités' },
|
||||
{ d66: 24, text: 'Un marchand sur un étal de marché en plein air tente de vendre quelque chose aux Voyageurs' },
|
||||
{ d66: 25, text: "Incendie, rupture de dôme ou autre situation d'urgence en cours" },
|
||||
{ d66: 26, text: 'Tentative de vol sur les Voyageurs' },
|
||||
{ d66: 31, text: 'Accident de véhicule impliquant les Voyageurs' },
|
||||
{ d66: 32, text: 'Un vaisseau spatial survole les Voyageurs à basse altitude' },
|
||||
{ d66: 33, text: 'Xéno-espèce ou autre Hors-monde' },
|
||||
{ d66: 34, text: 'Un personnage aléatoire bouscule un Voyageur', followUp: 'npc-contact' },
|
||||
{ d66: 35, text: 'Pickpocket' },
|
||||
{ d66: 36, text: 'Équipe média ou journaliste' },
|
||||
{ d66: 41, text: 'Patrouille de sécurité' },
|
||||
{ d66: 42, text: 'Bâtiment ancien ou archives' },
|
||||
{ d66: 43, text: 'Festival' },
|
||||
{ d66: 44, text: "Quelqu'un suit les personnages" },
|
||||
{ d66: 45, text: 'Groupe ou événement culturel inhabituel' },
|
||||
{ d66: 46, text: 'Fonctionnaire planétaire' },
|
||||
{ d66: 51, text: "Les Voyageurs repèrent quelqu'un qu'ils reconnaissent" },
|
||||
{ d66: 52, text: 'Manifestation publique' },
|
||||
{ d66: 53, text: 'Les Voyageurs croisent un robot ou autre serviteur' },
|
||||
{ d66: 54, text: 'Client potentiel', followUp: 'client-mission' },
|
||||
{ d66: 55, text: "Crime tel qu'un vol ou une attaque en cours" },
|
||||
{ d66: 56, text: "Un prêcheur de rue s'en prend aux Voyageurs" },
|
||||
{ d66: 61, text: "Diffusion d'informations sur les écrans publics" },
|
||||
{ d66: 62, text: 'Couvre-feu soudain ou autre restriction de mouvement' },
|
||||
{ d66: 63, text: 'Rue inhabituellement vide ou calme' },
|
||||
{ d66: 64, text: 'Annonce publique' },
|
||||
{ d66: 65, text: 'Événement sportif' },
|
||||
{ d66: 66, text: 'Dignitaire impérial' },
|
||||
];
|
||||
|
||||
export const ENCOUNTER_CONTEXTS = {
|
||||
starport: {
|
||||
label: 'Astroport',
|
||||
tableKey: 'starport-encounters',
|
||||
entries: STARPORT_ENCOUNTERS_TABLE,
|
||||
},
|
||||
rural: {
|
||||
label: 'Rural',
|
||||
tableKey: 'rural-encounters',
|
||||
entries: RURAL_ENCOUNTERS_TABLE,
|
||||
},
|
||||
urban: {
|
||||
label: 'Urbain',
|
||||
tableKey: 'urban-encounters',
|
||||
entries: URBAN_ENCOUNTERS_TABLE,
|
||||
},
|
||||
};
|
||||
|
||||
export const NPC_ROLLTABLE_DEFINITIONS = [
|
||||
{ key: 'allies-enemies', name: 'PNJ — Alliés et ennemis', formula: '1d36', entries: ALLIES_ENEMIES_TABLE },
|
||||
{ key: 'character-quirks', name: 'PNJ — Particularités', formula: '1d36', entries: CHARACTER_QUIRKS_TABLE },
|
||||
{ key: 'experience-profiles', name: 'PNJ — Expérience', formula: '1d8', entries: EXPERIENCE_PROFILES.map((entry, index) => ({ roll: index + 1, text: entry.label })) },
|
||||
{ key: 'random-clients', name: 'PNJ — Clients aléatoires', formula: '1d36', entries: RANDOM_CLIENT_TABLE },
|
||||
{ key: 'random-missions', name: 'PNJ — Missions aléatoires', formula: '1d36', entries: RANDOM_MISSION_TABLE },
|
||||
{ key: 'random-targets', name: 'PNJ — Cibles aléatoires', formula: '1d36', entries: RANDOM_TARGET_TABLE },
|
||||
{ key: 'random-opposition', name: 'PNJ — Oppositions aléatoires', formula: '1d36', entries: RANDOM_OPPOSITION_TABLE },
|
||||
{ key: 'starport-encounters', name: 'PNJ — Rencontres astroport', formula: '1d36', entries: STARPORT_ENCOUNTERS_TABLE },
|
||||
{ key: 'rural-encounters', name: 'PNJ — Rencontres rurales', formula: '1d36', entries: RURAL_ENCOUNTERS_TABLE },
|
||||
{ key: 'urban-encounters', name: 'PNJ — Rencontres urbaines', formula: '1d36', entries: URBAN_ENCOUNTERS_TABLE },
|
||||
];
|
||||
561
scripts/data/tradeTables.js
Normal file
561
scripts/data/tradeTables.js
Normal file
@@ -0,0 +1,561 @@
|
||||
/**
|
||||
* MGT2 Commerce – Trade Tables
|
||||
* Source : Mongoose Traveller 2e, pages 235–241 (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 11–36 : extraites des pages 235–241 du livre de règles.
|
||||
* D66 41–66 : à 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 11–16 : 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 21–26 : 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 31–36 : 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 41–46 : 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 51–56 : 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 61–66 : 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' },
|
||||
};
|
||||
Reference in New Issue
Block a user