539 lines
14 KiB
TypeScript
539 lines
14 KiB
TypeScript
export type HelpLocale = "en" | "fr";
|
||
|
||
export type LocalizedText = {
|
||
en: string;
|
||
fr: string;
|
||
};
|
||
|
||
export type HelpPropertyColor = "brown" | "cyan" | "pink" | "green" | "red" | "yellow" | "orange" | "blue";
|
||
|
||
export type HelpProperty = {
|
||
id: string;
|
||
color: HelpPropertyColor;
|
||
name: LocalizedText;
|
||
price: number;
|
||
houseCost: number;
|
||
rent: number;
|
||
rent1: number;
|
||
rent2: number;
|
||
rent3: number;
|
||
rent4: number;
|
||
rent5: number;
|
||
mortgage: number;
|
||
};
|
||
|
||
export type HelpVehicle = {
|
||
id: string;
|
||
name: LocalizedText;
|
||
tier: LocalizedText;
|
||
price: LocalizedText;
|
||
text: LocalizedText;
|
||
};
|
||
|
||
export type HelpWeapon = {
|
||
id: string;
|
||
name: LocalizedText;
|
||
tier: LocalizedText;
|
||
price: LocalizedText;
|
||
text: LocalizedText;
|
||
};
|
||
|
||
export function getLocalizedText(value: LocalizedText, locale: HelpLocale): string {
|
||
return value[locale];
|
||
}
|
||
|
||
export const helpProperties: HelpProperty[] = [
|
||
{
|
||
id: "negotown",
|
||
name: { en: "Negotown", fr: "Négotown" },
|
||
price: 60,
|
||
houseCost: 50,
|
||
rent: 2,
|
||
rent1: 10,
|
||
rent2: 30,
|
||
rent3: 90,
|
||
rent4: 160,
|
||
rent5: 250,
|
||
mortgage: 30,
|
||
color: "brown",
|
||
},
|
||
{
|
||
id: "black-arretxea",
|
||
name: { en: "Black Arretxea", fr: "Black Arretxea" },
|
||
price: 60,
|
||
houseCost: 50,
|
||
rent: 4,
|
||
rent1: 20,
|
||
rent2: 60,
|
||
rent3: 180,
|
||
rent4: 320,
|
||
rent5: 450,
|
||
mortgage: 30,
|
||
color: "brown",
|
||
},
|
||
{
|
||
id: "17-rue-des-patates",
|
||
name: { en: "17 rue des patates", fr: "17 rue des patates" },
|
||
price: 100,
|
||
houseCost: 50,
|
||
rent: 6,
|
||
rent1: 30,
|
||
rent2: 90,
|
||
rent3: 270,
|
||
rent4: 400,
|
||
rent5: 550,
|
||
mortgage: 50,
|
||
color: "cyan",
|
||
},
|
||
{
|
||
id: "69-rue-des-patates",
|
||
name: { en: "69 rue des patates", fr: "69 rue des patates" },
|
||
price: 100,
|
||
houseCost: 50,
|
||
rent: 6,
|
||
rent1: 30,
|
||
rent2: 90,
|
||
rent3: 270,
|
||
rent4: 400,
|
||
rent5: 550,
|
||
mortgage: 50,
|
||
color: "cyan",
|
||
},
|
||
{
|
||
id: "420-rue-des-patates",
|
||
name: { en: "420 rue des patates", fr: "420 rue des patates" },
|
||
price: 120,
|
||
houseCost: 50,
|
||
rent: 8,
|
||
rent1: 40,
|
||
rent2: 100,
|
||
rent3: 300,
|
||
rent4: 450,
|
||
rent5: 600,
|
||
mortgage: 60,
|
||
color: "cyan",
|
||
},
|
||
{
|
||
id: "nuketown",
|
||
name: { en: "Nuketown", fr: "Nuketown" },
|
||
price: 140,
|
||
houseCost: 100,
|
||
rent: 10,
|
||
rent1: 50,
|
||
rent2: 150,
|
||
rent3: 450,
|
||
rent4: 625,
|
||
rent5: 750,
|
||
mortgage: 70,
|
||
color: "pink",
|
||
},
|
||
{
|
||
id: "hijacked",
|
||
name: { en: "Hijacked", fr: "Hijacked" },
|
||
price: 140,
|
||
houseCost: 100,
|
||
rent: 10,
|
||
rent1: 50,
|
||
rent2: 150,
|
||
rent3: 450,
|
||
rent4: 625,
|
||
rent5: 750,
|
||
mortgage: 70,
|
||
color: "pink",
|
||
},
|
||
{
|
||
id: "bassland",
|
||
name: { en: "Bassland", fr: "Bassland" },
|
||
price: 160,
|
||
houseCost: 100,
|
||
rent: 12,
|
||
rent1: 60,
|
||
rent2: 180,
|
||
rent3: 500,
|
||
rent4: 700,
|
||
rent5: 900,
|
||
mortgage: 80,
|
||
color: "pink",
|
||
},
|
||
{
|
||
id: "numera-fight-club",
|
||
name: { en: "Numera Fight Club", fr: "Numera Fight Club" },
|
||
price: 180,
|
||
houseCost: 100,
|
||
rent: 14,
|
||
rent1: 70,
|
||
rent2: 200,
|
||
rent3: 550,
|
||
rent4: 750,
|
||
rent5: 950,
|
||
mortgage: 90,
|
||
color: "green",
|
||
},
|
||
{
|
||
id: "snoopys-id",
|
||
name: { en: "Snoopy's ID", fr: "Snoopy's ID" },
|
||
price: 180,
|
||
houseCost: 100,
|
||
rent: 14,
|
||
rent1: 70,
|
||
rent2: 200,
|
||
rent3: 550,
|
||
rent4: 750,
|
||
rent5: 950,
|
||
mortgage: 90,
|
||
color: "green",
|
||
},
|
||
{
|
||
id: "jahland-dispensory",
|
||
name: { en: "Jahland Dispensory", fr: "Jahland Dispensory" },
|
||
price: 200,
|
||
houseCost: 100,
|
||
rent: 16,
|
||
rent1: 80,
|
||
rent2: 220,
|
||
rent3: 600,
|
||
rent4: 800,
|
||
rent5: 1000,
|
||
mortgage: 100,
|
||
color: "green",
|
||
},
|
||
{
|
||
id: "pink-hoodie-studio",
|
||
name: { en: "Pink Hoodie Studio", fr: "Pink Hoodie Studio" },
|
||
price: 220,
|
||
houseCost: 150,
|
||
rent: 18,
|
||
rent1: 90,
|
||
rent2: 250,
|
||
rent3: 700,
|
||
rent4: 875,
|
||
rent5: 1050,
|
||
mortgage: 110,
|
||
color: "red",
|
||
},
|
||
{
|
||
id: "mp7-studio",
|
||
name: { en: "MP7 Studio", fr: "MP7 Studio" },
|
||
price: 220,
|
||
houseCost: 150,
|
||
rent: 18,
|
||
rent1: 90,
|
||
rent2: 250,
|
||
rent3: 700,
|
||
rent4: 875,
|
||
rent5: 1050,
|
||
mortgage: 110,
|
||
color: "red",
|
||
},
|
||
{
|
||
id: "pct-studio",
|
||
name: { en: "PCT Studio", fr: "PCT Studio" },
|
||
price: 240,
|
||
houseCost: 150,
|
||
rent: 20,
|
||
rent1: 100,
|
||
rent2: 300,
|
||
rent3: 750,
|
||
rent4: 925,
|
||
rent5: 1100,
|
||
mortgage: 120,
|
||
color: "red",
|
||
},
|
||
{
|
||
id: "elysee",
|
||
name: { en: "l'Elysée", fr: "l'Elysée" },
|
||
price: 260,
|
||
houseCost: 150,
|
||
rent: 22,
|
||
rent1: 110,
|
||
rent2: 330,
|
||
rent3: 800,
|
||
rent4: 975,
|
||
rent5: 1150,
|
||
mortgage: 130,
|
||
color: "yellow",
|
||
},
|
||
{
|
||
id: "bar-freak-show",
|
||
name: { en: "Bar Freak Show", fr: "Bar Freak Show" },
|
||
price: 260,
|
||
houseCost: 150,
|
||
rent: 22,
|
||
rent1: 110,
|
||
rent2: 330,
|
||
rent3: 800,
|
||
rent4: 975,
|
||
rent5: 1150,
|
||
mortgage: 130,
|
||
color: "yellow",
|
||
},
|
||
{
|
||
id: "garage-de-benoir",
|
||
name: { en: "Garage de Benoir", fr: "Garage de Benoir" },
|
||
price: 280,
|
||
houseCost: 150,
|
||
rent: 24,
|
||
rent1: 120,
|
||
rent2: 360,
|
||
rent3: 850,
|
||
rent4: 1025,
|
||
rent5: 1200,
|
||
mortgage: 140,
|
||
color: "yellow",
|
||
},
|
||
{
|
||
id: "rue-vendredi-des-noirs",
|
||
name: { en: "Rue vendredi des noirs", fr: "Rue vendredi des noirs" },
|
||
price: 300,
|
||
houseCost: 200,
|
||
rent: 26,
|
||
rent1: 130,
|
||
rent2: 390,
|
||
rent3: 900,
|
||
rent4: 1100,
|
||
rent5: 1275,
|
||
mortgage: 150,
|
||
color: "orange",
|
||
},
|
||
{
|
||
id: "domaine-de-m-p",
|
||
name: { en: "Domaine de M. P", fr: "Domaine de M. P" },
|
||
price: 300,
|
||
houseCost: 200,
|
||
rent: 26,
|
||
rent1: 130,
|
||
rent2: 390,
|
||
rent3: 900,
|
||
rent4: 1100,
|
||
rent5: 1275,
|
||
mortgage: 150,
|
||
color: "orange",
|
||
},
|
||
{
|
||
id: "villa-du-rj",
|
||
name: { en: "Villa du RJ", fr: "Villa du RJ" },
|
||
price: 320,
|
||
houseCost: 200,
|
||
rent: 28,
|
||
rent1: 150,
|
||
rent2: 450,
|
||
rent3: 1000,
|
||
rent4: 1200,
|
||
rent5: 1400,
|
||
mortgage: 160,
|
||
color: "orange",
|
||
},
|
||
{
|
||
id: "negoplaza",
|
||
name: { en: "Negoplaza", fr: "Négoplaza" },
|
||
price: 350,
|
||
houseCost: 200,
|
||
rent: 35,
|
||
rent1: 175,
|
||
rent2: 500,
|
||
rent3: 1100,
|
||
rent4: 1300,
|
||
rent5: 1500,
|
||
mortgage: 175,
|
||
color: "blue",
|
||
},
|
||
{
|
||
id: "lbtrd-tower",
|
||
name: { en: "LBTRD Tower", fr: "LBTRD Tower" },
|
||
price: 400,
|
||
houseCost: 200,
|
||
rent: 50,
|
||
rent1: 200,
|
||
rent2: 600,
|
||
rent3: 1400,
|
||
rent4: 1700,
|
||
rent5: 2000,
|
||
mortgage: 200,
|
||
color: "blue",
|
||
},
|
||
];
|
||
|
||
export const helpVehicles: HelpVehicle[] = [
|
||
{
|
||
id: "trottinette-sans-plomb-75",
|
||
name: {
|
||
en: "Trottinette au sans-plomb 75",
|
||
fr: "Trottinette au sans-plomb 75",
|
||
},
|
||
tier: { en: "Tier 0", fr: "Tier 0" },
|
||
price: { en: "150₦", fr: "150₦" },
|
||
text: {
|
||
en: "Roll a die: 1–2 breakdown (no effect). 3–5 move forward 1 space. 6 explosion, move back 2 spaces.",
|
||
fr: "Lancer un dé : 1–2 panne (aucun effet). 3–5 avance d’1 case. 6 explosion, recule de 2 cases.",
|
||
},
|
||
},
|
||
{
|
||
id: "exosquelette-backflips",
|
||
name: {
|
||
en: "Exosquelette à méga backflips",
|
||
fr: "Exosquelette à méga backflips",
|
||
},
|
||
tier: { en: "Tier 0", fr: "Tier 0" },
|
||
price: { en: "150₦", fr: "150₦" },
|
||
text: {
|
||
en: "Roll a die: 1–2 breakdown. 3–5 move back 1 space. 6 explosion, move forward 2 spaces.",
|
||
fr: "Lancer un dé : 1–2 panne. 3–5 recule d’1 case. 6 explosion, avance de 2 cases.",
|
||
},
|
||
},
|
||
{
|
||
id: "automobile",
|
||
name: { en: "Automobile", fr: "Automobile" },
|
||
tier: { en: "Tier 1", fr: "Tier 1" },
|
||
price: { en: "250₦", fr: "250₦" },
|
||
text: {
|
||
en: "Move forward 1 extra space after normal movement.",
|
||
fr: "Avance d’1 case supplémentaire après le déplacement normal.",
|
||
},
|
||
},
|
||
{
|
||
id: "helicoptere",
|
||
name: { en: "Hélicoptère", fr: "Hélicoptère" },
|
||
tier: { en: "Tier 2", fr: "Tier 2" },
|
||
price: { en: "400₦", fr: "400₦" },
|
||
text: {
|
||
en: "Choose to move forward or back by 1 to 3 spaces after normal movement.",
|
||
fr: "Choisir d’avancer ou reculer de 1 à 3 cases après le déplacement normal.",
|
||
},
|
||
},
|
||
{
|
||
id: "tank",
|
||
name: { en: "Tank", fr: "Tank" },
|
||
tier: { en: "Tier 3", fr: "Tier 3" },
|
||
price: { en: "450₦", fr: "450₦" },
|
||
text: {
|
||
en: "Move forward 2 or 3 spaces. Protects you from negative effects of the landing space and the passed-over space. If you land on another player, they go to Hospital.",
|
||
fr: "Avance de 2 ou 3 cases. Protège le joueur des effets négatifs de la case d’arrivée et de la case survolée. Si vous arrivez sur un joueur, il est envoyé à l’Hôpital.",
|
||
},
|
||
},
|
||
{
|
||
id: "avion-de-chasse",
|
||
name: { en: "Avion de chasse", fr: "Avion de chasse" },
|
||
tier: { en: "Tier 4", fr: "Tier 4" },
|
||
price: { en: "600₦", fr: "600₦" },
|
||
text: {
|
||
en: "Choose to move forward 1 to 6 spaces after normal movement.",
|
||
fr: "Choisir d’avancer de 1 à 6 cases après le déplacement normal.",
|
||
},
|
||
},
|
||
{
|
||
id: "teleporteur-de-poche",
|
||
name: { en: "Téléporteur de poche", fr: "Téléporteur de poche" },
|
||
tier: { en: "Tier 5", fr: "Tier 5" },
|
||
price: { en: "800₦", fr: "800₦" },
|
||
text: {
|
||
en: "Teleport instantly to any space, ignoring dice and intermediate spaces.",
|
||
fr: "Téléportation immédiate vers n’importe quelle case, sans tenir compte des dés.",
|
||
},
|
||
},
|
||
];
|
||
|
||
export const helpWeapons: HelpWeapon[] = [
|
||
{
|
||
id: "rpg-7",
|
||
name: { en: "RPG-7", fr: "RPG-7" },
|
||
tier: { en: "Tier 0", fr: "Tier 0" },
|
||
price: { en: "150₦", fr: "150₦" },
|
||
text: {
|
||
en: "Unlimited stock. Destroys a house on your property or an adjacent one. Up to 2 shots per turn. Roll: 1–4 hit, 5 miss, 6 explosion (go to Hospital). On a mortgaged property, a hit resets it.",
|
||
fr: "Stock illimité. Détruit une maison sur la propriété où vous êtes ou adjacente. Jusqu’à 2 tirs par tour. Jet : 1–4 réussite, 5 raté, 6 explosion (direction Hôpital). Sur propriété hypothéquée, un tir réussi la réinitialise.",
|
||
},
|
||
},
|
||
{
|
||
id: "c4",
|
||
name: { en: "C4 (charges)", fr: "C4 (charges)" },
|
||
tier: { en: "Tier 0", fr: "Tier 0" },
|
||
price: {
|
||
en: "40₦ first, then x2 / x3…",
|
||
fr: "40₦ la 1re, puis x2 / x3…",
|
||
},
|
||
text: {
|
||
en: "Unlimited charges. Place on a house by passing over or stopping. Any player passing can remove a charge and keep it. From two rounds after placement, the placer may detonate: destroy house, player on space → Hospital, player adjacent → Prison (terrorist). EMP disables C4 while active.",
|
||
fr: "Charges illimitées. Pose sur une maison en passant ou en s’arrêtant. Toute charge peut être retirée par n’importe quel joueur en passant (il la récupère). À partir de 2 rounds après la pose, le poseur peut déclencher : maison détruite, joueur sur place → Hôpital, joueur adjacent → Prison (terroriste). Bombe IEM désactive les C4 tant qu’elle est active.",
|
||
},
|
||
},
|
||
{
|
||
id: "glock-26",
|
||
name: { en: "Glock 26", fr: "Glock 26" },
|
||
tier: { en: "Tier 1", fr: "Tier 1" },
|
||
price: { en: "200₦", fr: "200₦" },
|
||
text: {
|
||
en: "Extort a player on the same or adjacent space for 300₦. If the target also has a Glock, roll: 4–6 attacker wins, 1–3 attacker loses. Loser is extorted and sent to Hospital.",
|
||
fr: "Racket d’un joueur sur la même case ou adjacente pour 300₦. Si la cible possède aussi une Glock, jet : 4–6 victoire de l’attaquant, 1–3 défaite. Le perdant est racketté et envoyé à l’Hôpital.",
|
||
},
|
||
},
|
||
{
|
||
id: "ar15",
|
||
name: { en: "AR15", fr: "AR15" },
|
||
tier: { en: "Tier 2", fr: "Tier 2" },
|
||
price: { en: "400₦", fr: "400₦" },
|
||
text: {
|
||
en: "Cancels the effect of any space the player is on.",
|
||
fr: "Annule l’effet de n’importe quelle case sur laquelle le joueur se trouve.",
|
||
},
|
||
},
|
||
{
|
||
id: "mortar",
|
||
name: { en: "Mortar", fr: "Mortier" },
|
||
tier: { en: "Tier 3", fr: "Tier 3" },
|
||
price: { en: "400₦", fr: "400₦" },
|
||
text: {
|
||
en: "3 shots. Each shot destroys a house on an adjacent space; if none, the property is mortgaged; if already mortgaged, the property is reset.",
|
||
fr: "3 tirs. Chaque tir détruit une maison sur une case adjacente ; s’il n’y a pas de maison, la propriété est hypothéquée ; si elle l’est déjà, elle est réinitialisée.",
|
||
},
|
||
},
|
||
{
|
||
id: "emp-bomb",
|
||
name: { en: "EMP Bomb", fr: "Bombe IEM" },
|
||
tier: { en: "Tier 4", fr: "Tier 4" },
|
||
price: { en: "400₦", fr: "400₦" },
|
||
text: {
|
||
en: "For one turn: all spaces are disabled, remote actions disabled, private communication forbidden (except same space), all C4 charges disabled.",
|
||
fr: "Pendant un tour : toutes les cases sont désactivées, les actions à distance sont désactivées, les communications privées interdites (sauf même case), toutes les charges de C4 sont désactivées.",
|
||
},
|
||
},
|
||
{
|
||
id: "artillery-piece",
|
||
name: { en: "Artillery piece", fr: "Pièce d’artillerie" },
|
||
tier: { en: "Tier 5", fr: "Tier 5" },
|
||
price: { en: "600₦", fr: "600₦" },
|
||
text: {
|
||
en: "Removes all houses from a single property.",
|
||
fr: "Supprime toutes les maisons d’une propriété appartenant à un joueur.",
|
||
},
|
||
},
|
||
{
|
||
id: "rods-from-gods",
|
||
name: { en: "Rods From Gods", fr: "Rods From Gods" },
|
||
tier: { en: "Tier 6", fr: "Tier 6" },
|
||
price: { en: "1500₦", fr: "1500₦" },
|
||
text: {
|
||
en: "Razes an entire color set: removes all houses and resets properties.",
|
||
fr: "Rase une couleur entière : supprime toutes les maisons et réinitialise les propriétés.",
|
||
},
|
||
},
|
||
{
|
||
id: "satan2",
|
||
name: { en: "Satan2", fr: "Satan2" },
|
||
tier: { en: "Game Ender", fr: "Game Ender" },
|
||
price: { en: "5000₦", fr: "5000₦" },
|
||
text: {
|
||
en: "Destroys all of NegoCity and grants immediate victory to the user.",
|
||
fr: "Détruit l’intégralité de NegoCity et donne la victoire immédiate au joueur qui l’utilise.",
|
||
},
|
||
},
|
||
{
|
||
id: "la-peste-negre",
|
||
name: { en: "La Peste Nègre", fr: "La Peste Nègre" },
|
||
tier: { en: "Game Ender", fr: "Game Ender" },
|
||
price: { en: "7000₦", fr: "7000₦" },
|
||
text: {
|
||
en: "La Peste Nègre (natural selection) eliminates all players except two. The two survivors automatically win.",
|
||
fr: "La Peste Nègre (sélection naturelle) élimine tous les joueurs sauf deux. Les deux survivants remportent automatiquement la partie.",
|
||
},
|
||
},
|
||
];
|