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.", }, }, ];