# frozen_string_literal: true

module Engine
  module Game
    module G1822
      module Entities
        COMPANIES = [
          {
            name: 'P1-BEC (5-Train)',
            sym: 'P1',
            value: 0,
            revenue: 5,
            desc: 'MAJOR, Phase 5. 5-Train. This is a normal 5-train that is subject to all of the normal rules. '\
                  'Note that a company can acquire this private company at the start of its turn, even if it is '\
                  'already at its train limit as this counts as an acquisition action, not a train buying action. '\
                  'However, once acquired the acquiring company needs to check whether it is at train limit and '\
                  'discard any trains held in excess of limit.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P2-MtonR (Remove Town)',
            sym: 'P2',
            value: 0,
            revenue: 10,
            desc: 'MAJOR/MINOR, Phase 2. Remove Small Station. Allows the owning company to place a plain yellow '\
                  'track tile directly on an undeveloped small station hex location or upgrade a small station tile '\
                  'of one colour to a plain track tile of the next colour. This closes the company and counts as '\
                  'the company’s normal track laying step. All other normal track laying restrictions apply. Once '\
                  'acquired, the private company pays its revenue to the owning company until the power is '\
                  'exercised and the company is closed.',
            abilities: [
              {
                type: 'tile_lay',
                owner_type: 'corporation',
                when: 'track',
                count: 1,
                reachable: true,
                closed_when_used_up: true,
                hexes: [],
                tiles: %w[7 8 9 80 81 82 83 544 545 546 60 169],
              },
            ],
            color: nil,
          },
          {
            name: 'P3-S&HR (Permanent 2T)',
            sym: 'P3',
            value: 0,
            revenue: 0,
            desc: 'MAJOR, Phase 2. Permanent 2-Train. 2P-train is a permanent 2-train. It can’t be sold to another '\
                  'company. It does not count against train limit. It does not count as a train for the purpose of '\
                  'mandatory train ownership and purchase. A company may not own more than one 2P train. '\
                  'A company cannot own both a permanent L-train and a permanent 2-train. Dividends '\
                  'can be separated from other trains and may be split, paid in full, or retained. If a company '\
                  'runs a 2P-train and pays a dividend (split or full), but retains its dividend from other train '\
                  'operations this still counts as a normal dividend for stock price movement purposes. Vice-versa, '\
                  'if a company pays a dividend (split or full) with its other trains, but retains the dividend '\
                  'from the 2P, this also still counts as a normal dividend for stock price movement purposes. Does '\
                  'not close.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P4-SDR (Permanent 2T)',
            sym: 'P4',
            value: 0,
            revenue: 0,
            desc: 'MAJOR, Phase 2. Permanent 2-Train. 2P-train is a permanent 2-train. It can’t be sold to another '\
                  'company. It does not count against train limit. It does not count as a train for the purpose of '\
                  'mandatory train ownership and purchase. A company may not own more than one 2P train. '\
                  'A company cannot own both a permanent L-train and a permanent 2-train. Dividends '\
                  'can be separated from other trains and may be split, paid in full, or retained. If a company '\
                  'runs a 2P-train and pays a dividend (split or full), but retains its dividend from other train '\
                  'operations this still counts as a normal dividend for stock price movement purposes. Vice-versa, '\
                  'if a company pays a dividend (split or full) with its other trains, but retains the dividend '\
                  'from the 2P, this also still counts as a normal dividend for stock price movement purposes. '\
                  'Does not close.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P5-LC&DR (English Channel)',
            sym: 'P5',
            value: 0,
            revenue: 10,
            desc: 'MAJOR, Phase 3. English Channel. The owning company may place an exchange station token on the '\
                  'map, free of charge, in a token space in the English Channel. The company does not need to be '\
                  'able to trace a route to the English Channel to use this property (i.e. any company can use this '\
                  'power to place a token in the English Channel). If no token spaces are available, but a space '\
                  'could be created by upgrading the English Channel track then this power may be used to place a '\
                  'token and upgrade the track simultaneously. This counts as the acquiring company’s tile lay '\
                  'action and incurs the usual costs for doing so. Alternatively, it can move an exchange station '\
                  'token to the available station token section on its company charter.',
            abilities: [
              {
                type: 'teleport',
                owner_type: 'corporation',
                hexes: ['P43'],
                tiles: %w[X9 X15],
              },
              {
                type: 'token',
                owner_type: 'corporation',
                hexes: ['P43'],
                price: 0,
                teleport_price: 0,
                count: 1,
                extra_action: true,
              },
            ],
            color: nil,
          },
          {
            name: 'P6-L&SR (Mail Contract)',
            sym: 'P6',
            value: 0,
            revenue: 10,
            desc: 'MAJOR, Phase 3. Mail Contract. After running trains, the owning company receives income into its '\
                  'treasury equal to one half of the base value of the start and end stations from one of the '\
                  'trains operated. Doubled values (for E trains or destination tokens) do not count. The company '\
                  'is not required to maximise the dividend from its run if it wishes to maximise its revenue from '\
                  'the mail contract by stopping at a large city and not running beyond it to include small '\
                  'stations. Does not close.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P7-S&BR (Mail Contract)',
            sym: 'P7',
            value: 0,
            revenue: 10,
            desc: 'MAJOR, Phase 3. Mail Contract. After running trains, the owning company receives income into its '\
                  'treasury equal to one half of the base value of the start and end stations from one of the '\
                  'trains operated. Doubled values (for E trains or destination tokens) do not count. The company '\
                  'is not required to maximise the dividend from its run if it wishes to maximise its revenue from '\
                  'the mail contract by stopping at a large city and not running beyond it to include small '\
                  'stations. Does not close.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P8-E&GR (Hill Discount)',
            sym: 'P8',
            value: 0,
            revenue: 10,
            desc: 'MAJOR/MINOR, Phase 3. Mountain/Hill Discount. Either: The acquiring company receives a discount '\
                  'token that can be used to pay the full cost of a single track tile lay on a rough terrain, hill '\
                  'or mountain hex. This closes the company. Or: The acquiring company rejects the token and '\
                  'receives a £20 discount off the cost of all hill and mountain terrain (i.e. NOT off the cost of '\
                  'rough terrain). The private company does not close. Closes if free token taken when acquired. '\
                  'Otherwise, flips when acquired and does not close.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P9-M&GNR (Double Cash)',
            sym: 'P9',
            value: 0,
            revenue: 10,
            desc: 'MAJOR/MINOR, Phase 3. Declare 2x Cash Holding. If held by a player, the holding player may '\
                  'declare double their actual cash holding at the end of a stock round to determine player turn '\
                  'order in the next stock round. If held by a company it pays revenue of '\
                  '£20 (green)/£40 (brown)/£60 (grey). Does not close.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P10-G&SWR (River Discount)',
            sym: 'P10',
            value: 0,
            revenue: 10,
            desc: 'MAJOR/MINOR, Phase 3. River/Estuary Discount. The acquiring company receives two discount tokens '\
                  'each of which can be used to pay the cost for one track lay over an estuary crossing. They can '\
                  'be used on the same or different tile lays. Use of the second token closes the company. In '\
                  'addition, until the company closes it provides a discount of £10 against the cost of all river '\
                  'terrain (excluding estuary crossings).',
            abilities: [
              {
                type: 'tile_lay',
                owner_type: 'corporation',
                when: 'track',
                count: 2,
                reachable: true,
                closed_when_used_up: true,
                hexes: [],
                tiles: [],
              },
              {
                type: 'tile_discount',
                owner_type: 'corporation',
                discount: 10,
                terrain: 'swamp',
              },
            ],
            color: nil,
          },
          {
            name: 'P11-B&ER (Adv. Tile Lay)',
            sym: 'P11',
            value: 0,
            revenue: 10,
            desc: 'MAJOR/MINOR, Phase 2. Advanced Tile Lay. The owning company may lay one plain or small station '\
                  'track upgrade using the next colour of track to be available, before it is actually made '\
                  'available by phase progression. The normal rules for progression of track lay must be followed '\
                  '(i.e. grey upgrades brown upgrades green upgrades yellow) it is not possible to skip a colour '\
                  'using this private. All other normal track laying restrictions apply. This is in place of its '\
                  'normal track lay action. Once acquired, the private company pays its revenue to the owning '\
                  'company until the power is exercised and the company closes.',
            abilities: [
              {
                type: 'tile_lay',
                owner_type: 'corporation',
                when: 'track',
                count: 1,
                reachable: true,
                closed_when_used_up: true,
                hexes: [],
                tiles: %w[80 81 82 83 544 545 546 60 169 141 142 143 144 767 768 769 X17],
              },
            ],
            color: nil,
          },
          {
            name: 'P12-L&SR (Extra Tile Lay)',
            sym: 'P12',
            value: 0,
            revenue: 10,
            desc: 'MAJOR/MINOR, Phase 3. Extra Tile Lay. The owning company may lay an additional yellow tile (or '\
                  'two for major companies), or make one additional tile upgrade in its track laying step. The '\
                  'upgrade can be to a tile laid in its normal tile laying step. All other normal track laying '\
                  'restrictions apply. Once acquired, the private company pays its revenue to the owning company '\
                  'until the power is exercised and the company closes.',
            abilities: [
              {
                type: 'tile_lay',
                owner_type: 'corporation',
                when: 'track',
                count: 2,
                reachable: true,
                closed_when_used_up: true,
                hexes: [],
                tiles: [],
              },
            ],
            color: nil,
          },
          {
            name: 'P13-YN&BR (Pullman)',
            sym: 'P13',
            value: 0,
            revenue: 10,
            desc: 'MAJOR/MINOR, Phase 5. Pullman. A “Pullman” carriage train that can be added to another train '\
                  'owned by the company. It converts the train into a + train. Does not count against train limit '\
                  'and does not count as a train for the purposes of train ownership. Can’t be sold to another '\
                  'company. Does not close.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P14-K&TR (Pullman)',
            sym: 'P14',
            value: 0,
            revenue: 10,
            desc: 'MAJOR/MINOR, Phase 5. Pullman. A “Pullman” carriage train that can be added to another train '\
                  'owned by the company. It converts the train into a + train. Does not count against train limit '\
                  'and does not count as a train for the purposes of train ownership. Can’t be sold to another '\
                  'company. Does not close.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P15-HR (£10x Phase)',
            sym: 'P15',
            value: 0,
            revenue: 0,
            desc: 'MAJOR/MINOR, Phase 2. £10x Phase. Pays revenue of £10 x phase number to the player, and pays '\
                  'treasury credits of £10 x phase number to the private company. This credit is retained on the '\
                  'private company charter. When acquired, the acquiring company receives this treasury money and '\
                  'this private company closes. If not acquired beforehand, this company closes at the start of '\
                  'Phase 7 and all treasury credits are returned to the bank.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P16-TH (Tax Haven)',
            sym: 'P16',
            value: 0,
            revenue: 0,
            desc: 'CAN NOT BE AQUIRED. Tax Haven. As a stock round action, under the direction and funded by the '\
                  'owning player, the off-shore Tax Haven may purchase an available share certificate and place it '\
                  'onto P16’s charter. The certificate is not counted for determining directorship of a company. '\
                  'The share held in the tax haven does NOT count against the 60% share limit for purchasing '\
                  'shares. If at 60% (or more) in hand in a company, a player can still purchase an additional '\
                  'share in that company and place it in the tax haven. Similarly, if a player holds 50% of a '\
                  'company, plus has 10% of the same company in the tax haven, they can buy a further 10% share. '\
                  'A company with a share in the off-shore tax haven CAN be “all sold out” at the end of a stock '\
                  'round. Dividends paid to the share are also placed onto the off-shore tax haven charter. At the '\
                  'end of the game, the player receives the share certificate from the off-shore tax haven charter '\
                  'and includes it in their portfolio for determining final worth. The player also receives the '\
                  'cash from dividend income accumulated on the charter. Can’t be acquired. Does not count against '\
                  'the certificate limit.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P17-LUR (Move Card)',
            sym: 'P17',
            value: 0,
            revenue: 10,
            desc: 'MAJOR, Phase 2. Move Card. Allows the director of the owning company to select one concession, '\
                  'private company, or minor company from the relevant stack of certificates, excluding those items '\
                  'currently in the bidding boxes, and move it to the top or the bottom of the stack. Closes when '\
                  'the power is exercised.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P18-C&HPR (Station Swap)',
            sym: 'P18',
            value: 0,
            revenue: 10,
            desc: 'MAJOR, Phase 5. Station Marker Swap. Allows the owning company to move a token from the exchange '\
                  'token area of its charter to the available token area, or vice versa. This company closes when '\
                  'its power is exercised.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P19-AEC (Perm. L Train)',
            sym: 'P19',
            value: 0,
            revenue: 0,
            desc: 'MAJOR/MINOR, Phase 1. Permanent L-Train. An L-train cannot be sold to another company. It does '\
                  'not count as a train for the purposes of mandatory train ownership. It does not count against '\
                  'train ownership limit. A company cannot own both a permanent L-train and a permanent 2-train. '\
                  'Dividends can be separated from other trains and may be split, paid in full, or retained. If a '\
                  'company runs a permanent L-train and pays a dividend (split or full), but retains its dividend '\
                  'from other train operations this still counts as a normal dividend for stock price movement '\
                  'purposes. Vice-versa, if a company pays a dividend (split or full) with its other trains, but '\
                  'retains the dividend from the permanent L, this also still counts as a normal dividend for stock '\
                  'price movement purposes. Does not close.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P20-C&WR (£5x Phase)',
            sym: 'P20',
            value: 0,
            revenue: 0,
            desc: 'MAJOR/MINOR, Phase 3. £5x Phase. Pays revenue of £5 x phase number to the player, and pays '\
                  'treasury credits of £5 x phase number to the private company. This credit is retained on the '\
                  'private company charter. When acquired, the acquiring company receives this treasury money and '\
                  'this private company closes. If not acquired beforehand, this company closes at the start of '\
                  'Phase 7 and all treasury credits are returned to the bank.',
            abilities: [],
            color: nil,
          },
          {
            name: 'P21-HSBC (Grimsby/Hull Bridge)',
            sym: 'P21',
            value: 0,
            revenue: 10,
            desc: 'MAJOR/MINOR, Phase 2. Grimsby/Hull Bridge. Allows the owning company to lay yellow tiles in '\
                  'Grimsby and / or Hull, forming a direct track connection between the two cities over the '\
                  'Humber estuary. If one of the cities already has a yellow tile in place, then if used in phase 3 '\
                  'or later, one of the tile lays may be a green upgrade. No terrain costs apply for these tile '\
                  'lays. These tile lays count as the normal track laying phase for the operating company. The '\
                  'owning company must have a token in Hull or Grimsby to use this power. Closes when its power is '\
                  'exercised.',
            abilities: [
              {
                type: 'tile_lay',
                owner_type: 'corporation',
                when: 'track',
                count: 2,
                free: true,
                reachable: true,
                closed_when_used_up: true,
                hexes: %w[N21 N23],
                tiles: %w[5 6 57 15],
              },
            ],
            color: nil,
          },
          {
            name: 'CONCESSION: LNWR',
            sym: 'C1',
            value: 100,
            revenue: 10,
            desc: 'Have a face value £100 and converts into the LNWR’s 10% director certificate. LNWR may also put '\
                  'its destination token into Manchester when converted.',
            abilities: [
              {
                type: 'exchange',
                corporations: ['LNWR'],
                owner_type: 'player',
                from: 'par',
              },
            ],
            color: '#000',
            text_color: 'white',
          },
          {
            name: 'CONCESSION: GWR',
            sym: 'C2',
            value: 100,
            revenue: 10,
            desc: 'Have a face value £100 and contribute £100 to the conversion into the GWR director’s certificate.',
            abilities: [
              {
                type: 'exchange',
                corporations: ['GWR'],
                owner_type: 'player',
                from: 'par',
              },
            ],
            color: '#165016',
            text_color: 'white',
          },
          {
            name: 'CONCESSION: LBSCR',
            sym: 'C3',
            value: 100,
            revenue: 10,
            desc: 'Have a face value £100 and contribute £100 to the conversion into the LBSCR director’s '\
                  'certificate.',
            abilities: [
              {
                type: 'exchange',
                corporations: ['LBSCR'],
                owner_type: 'player',
                from: 'par',
              },
            ],
            color: '#cccc00',
            text_color: 'white',
          },
          {
            name: 'CONCESSION: SECR',
            sym: 'C4',
            value: 100,
            revenue: 10,
            desc: 'Have a face value £100 and contribute £100 to the conversion into the SECR director’s '\
                  'certificate.',
            abilities: [
              {
                type: 'exchange',
                corporations: ['SECR'],
                owner_type: 'player',
                from: 'par',
              },
            ],
            color: '#ff7f2a',
            text_color: 'white',
          },
          {
            name: 'CONCESSION: CR',
            sym: 'C5',
            value: 100,
            revenue: 10,
            desc: 'Have a face value £100 and contribute £100 to the conversion into the CR director’s certificate.',
            abilities: [
              {
                type: 'exchange',
                corporations: ['CR'],
                owner_type: 'player',
                from: 'par',
              },
            ],
            color: '#5555ff',
            text_color: 'white',
          },
          {
            name: 'CONCESSION: MR',
            sym: 'C6',
            value: 100,
            revenue: 10,
            desc: 'Have a face value £100 and contribute £100 to the conversion into the MR director’s certificate.',
            abilities: [
              {
                type: 'exchange',
                corporations: ['MR'],
                owner_type: 'player',
                from: 'par',
              },
            ],
            color: '#ff2a2a',
            text_color: 'white',
          },
          {
            name: 'CONCESSION: LYR',
            sym: 'C7',
            value: 100,
            revenue: 10,
            desc: 'Have a face value £100 and contribute £100 to the conversion into the LYR director’s certificate.',
            abilities: [
              {
                type: 'exchange',
                corporations: ['LYR'],
                owner_type: 'player',
                from: 'par',
              },
            ],
            color: '#5a2ca0',
            text_color: 'white',
          },
          {
            name: 'CONCESSION: NBR',
            sym: 'C8',
            value: 100,
            revenue: 10,
            desc: 'Have a face value £100 and contribute £100 to the conversion into the NBR director’s certificate.',
            abilities: [
              {
                type: 'exchange',
                corporations: ['NBR'],
                owner_type: 'player',
                from: 'par',
              },
            ],
            color: '#a05a2c',
            text_color: 'white',
          },
          {
            name: 'CONCESSION: SWR',
            sym: 'C9',
            value: 100,
            revenue: 10,
            desc: 'Have a face value £100 and contribute £100 to the conversion into the SWR director’s certificate.',
            abilities: [
              {
                type: 'exchange',
                corporations: ['SWR'],
                owner_type: 'player',
                from: 'par',
              },
            ],
            color: '#999999',
            text_color: 'white',
          },
          {
            name: 'CONCESSION: NER',
            sym: 'C10',
            value: 100,
            revenue: 10,
            desc: 'Have a face value £100 and contribute £100 to the conversion into the NER director’s certificate.',
            abilities: [
              {
                type: 'exchange',
                corporations: ['NER'],
                owner_type: 'player',
                from: 'par',
              },
            ],
            color: '#aade87',
            text_color: 'white',
          },
          {
            name: 'MINOR: 1. Great North of Scotland Railway',
            sym: 'M1',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is H1.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 2. Lanarkshire & Dumbartonshire Railway',
            sym: 'M2',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is E2.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 3. Edinburgh & Dalkeith Railway',
            sym: 'M3',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is H5.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 4. Newcastle & North Shields Railway',
            sym: 'M4',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is K10.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 5. Stockton and Darlington Railway',
            sym: 'M5',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is J15.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 6. Furness railway',
            sym: 'M6',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is G16.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 7. Warrington & Newton Railway',
            sym: 'M7',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is H23.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 8. Manchester Sheffield & Lincolnshire Railway',
            sym: 'M8',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is K24.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 9. East Lincolnshire Railway',
            sym: 'M9',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is N23.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 10. Grand Junction Railway',
            sym: 'M10',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is I30.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 11. Great Northern Railway',
            sym: 'M11',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is M30.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 12. Eastern Union Railway',
            sym: 'M12',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is P35.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 13. Headcorn & Maidstone Junction Light Railway',
            sym: 'M13',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is O40.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 14. Metropolitan Railway',
            sym: 'M14',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is M38. Home '\
                  'token cost £20, placing home token counts as first tile lay. ',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 15. London Tilbury & Southend Railway',
            sym: 'M15',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is M38.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 16. Wycombe Railway',
            sym: 'M16',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is M38.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 17. London & Southampton Railway',
            sym: 'M17',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is J41.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 18. Somerset & Dorset Joint Railway',
            sym: 'M18',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is I42.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 19. Penarth Harbour & Dock Railway Company',
            sym: 'M19',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is F35.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 20. Monmouthshire Railway & Canal Company',
            sym: 'M20',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is F33.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 21. Taff Vale railway',
            sym: 'M21',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is E34.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 22. Exeter and Crediton Railway',
            sym: 'M22',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is D41.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 23. West Cornwall Railway',
            sym: 'M23',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is A42.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 24. The Swansea and Mumbles Railway',
            sym: 'M24',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is D35.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 25. Yarmouth & Norwich Railway',
            sym: 'M25',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is Q30.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 26. Hull and Selby Railway',
            sym: 'M26',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is N21.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 27. City of Glasgow Union Railway',
            sym: 'M27',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is E6.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 28. Maryport and Carlisle Railway',
            sym: 'M28',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is G12.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 29. Shropshire and Montgomeryshire Railway',
            sym: 'M29',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is E28.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
          {
            name: 'MINOR: 30. Plymouth and Dartmoor Railway',
            sym: 'M30',
            value: 100,
            revenue: 0,
            desc: 'A 50% director’s certificate in the associated minor company. Starting location is B43.',
            abilities: [],
            color: '#ffffff',
            text_color: 'black',
          },
        ].freeze

        CORPORATIONS = [
          {
            sym: '1',
            name: 'Great North of Scotland Railway',
            logo: '1822/1',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'H1',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '2',
            name: 'Lanarkshire & Dumbartonshire Railway',
            logo: '1822/2',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'E2',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '3',
            name: 'Edinburgh & Dalkeith Railway',
            logo: '1822/3',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'H5',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '4',
            name: 'Newcastle & North Shields Railway',
            logo: '1822/4',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'K10',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '5',
            name: 'Stockton and Darlington Railway',
            logo: '1822/5',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'J15',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '6',
            name: 'Furness railway',
            logo: '1822/6',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'G16',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '7',
            name: 'Warrington & Newton Railway',
            logo: '1822/7',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'H23',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '8',
            name: 'Manchester Sheffield & Lincolnshire Railway',
            logo: '1822/8',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'K24',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '9',
            name: 'East Lincolnshire Railway',
            logo: '1822/9',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'N23',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '10',
            name: 'Grand Junction Railway',
            logo: '1822/10',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'I30',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '11',
            name: 'Great Northern Railway',
            logo: '1822/11',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'M30',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '12',
            name: 'Eastern Union Railway',
            logo: '1822/12',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'P35',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '13',
            name: 'Headcorn & Maidstone Junction Light Railway',
            logo: '1822/13',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'O40',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '14',
            name: 'Metropolitan Railway',
            logo: '1822/14',
            tokens: [20],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '15',
            name: 'London Tilbury & Southend Railway',
            logo: '1822/15',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'M38',
            city: 4,
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '16',
            name: 'Wycombe Railway',
            logo: '1822/16',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'M38',
            city: 2,
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '17',
            name: 'London & Southampton Railway',
            logo: '1822/17',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'J41',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '18',
            name: 'Somerset & Dorset Joint Railway',
            logo: '1822/18',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'I42',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '19',
            name: 'Penarth Harbour & Dock Railway Company',
            logo: '1822/19',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'F35',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '20',
            name: 'Monmouthshire Railway & Canal Company',
            logo: '1822/20',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'F33',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '21',
            name: 'Taff Vale railway',
            logo: '1822/21',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'E34',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '22',
            name: 'Exeter and Crediton Railway',
            logo: '1822/22',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'D41',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '23',
            name: 'West Cornwall Railway',
            logo: '1822/23',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'A42',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '24',
            name: 'The Swansea and Mumbles Railway',
            logo: '1822/24',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'D35',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '25',
            name: 'Yarmouth & Norwich Railway',
            logo: '1822/25',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'Q30',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '26',
            name: 'Hull and Selby Railway',
            logo: '1822/26',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'N21',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '27',
            name: 'City of Glasgow Union Railway',
            logo: '1822/27',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'E6',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '28',
            name: 'Maryport and Carlisle Railway',
            logo: '1822/28',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'G12',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '29',
            name: 'Shropshire and Montgomeryshire Railway',
            logo: '1822/29',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'E28',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: '30',
            name: 'Shropshire and Montgomeryshire Railway',
            logo: '1822/30',
            tokens: [0],
            type: 'minor',
            always_market_price: true,
            float_percent: 100,
            hide_shares: true,
            shares: [100],
            max_ownership_percent: 100,
            coordinates: 'B43',
            color: '#ffffff',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: 'LNWR',
            name: 'London and North Western Railway',
            logo: '1822/LNWR',
            tokens: [0, 100],
            type: 'major',
            float_percent: 10,
            shares: [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            always_market_price: true,
            coordinates: 'M38',
            city: 3,
            color: '#000',
            reservation_color: nil,
          },
          {
            sym: 'GWR',
            name: 'Great Western Railway',
            logo: '1822/GWR',
            tokens: [0, 100],
            type: 'major',
            float_percent: 20,
            always_market_price: true,
            coordinates: 'M38',
            city: 1,
            color: '#165016',
            reservation_color: nil,
          },
          {
            sym: 'LBSCR',
            name: 'London, Brighton and South Coast Railway',
            logo: '1822/LBSCR',
            tokens: [0, 100],
            type: 'major',
            float_percent: 20,
            always_market_price: true,
            coordinates: 'M38',
            city: 0,
            color: '#cccc00',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: 'SECR',
            name: 'South Eastern & Chatham Railway',
            logo: '1822/SECR',
            tokens: [0, 100],
            type: 'major',
            float_percent: 20,
            always_market_price: true,
            coordinates: 'M38',
            city: 5,
            abilities: [
              {
                type: 'token',
                description: 'Token in English Channel for free',
                hexes: ['P43'],
                count: 1,
                price: 0,
              },
            ],
            color: '#ff7f2a',
            reservation_color: nil,
          },
          {
            sym: 'CR',
            name: 'Caledonian Railway',
            logo: '1822/CR',
            tokens: [0, 100],
            type: 'major',
            float_percent: 20,
            always_market_price: true,
            coordinates: 'E6',
            color: '#5555ff',
            reservation_color: nil,
          },
          {
            sym: 'MR',
            name: 'Midland Railway',
            logo: '1822/MR',
            tokens: [0, 100],
            type: 'major',
            float_percent: 20,
            always_market_price: true,
            coordinates: 'J29',
            color: '#ff2a2a',
            reservation_color: nil,
          },
          {
            sym: 'LYR',
            name: 'Lancashire & Yorkshire Railway',
            logo: '1822/LYR',
            tokens: [0, 100],
            type: 'major',
            float_percent: 20,
            always_market_price: true,
            coordinates: 'G22',
            color: '#5a2ca0',
            reservation_color: nil,
          },
          {
            sym: 'NBR',
            name: 'North British Railway',
            logo: '1822/NBR',
            tokens: [0, 100],
            type: 'major',
            float_percent: 20,
            always_market_price: true,
            coordinates: 'H5',
            color: '#a05a2c',
            reservation_color: nil,
          },
          {
            sym: 'SWR',
            name: 'South Wales Railway',
            logo: '1822/SWR',
            tokens: [0, 100],
            type: 'major',
            float_percent: 20,
            always_market_price: true,
            coordinates: 'H33',
            color: '#999999',
            text_color: 'black',
            reservation_color: nil,
          },
          {
            sym: 'NER',
            name: 'North Eastern Railway',
            logo: '1822/NER',
            tokens: [0, 100],
            type: 'major',
            float_percent: 20,
            always_market_price: true,
            coordinates: 'L19',
            color: '#aade87',
            reservation_color: nil,
          },
        ].freeze
      end
    end
  end
end
