changed "http" to "https" in URLs
[rocksndiamonds.git] / src / game_mm / mm_main.c
index 0c26ebbda0ad48601748fa6315f896a23d4fad65..77f7e3a25e764f25e90491b45aa2eb7980e7648b 100644 (file)
@@ -4,7 +4,7 @@
 // (c) 1994-2017 by Artsoft Entertainment
 //                         Holger Schemel
 //                 info@artsoft.org
 // (c) 1994-2017 by Artsoft Entertainment
 //                         Holger Schemel
 //                 info@artsoft.org
-//                 http://www.artsoft.org/
+//                 https://www.artsoft.org/
 // ----------------------------------------------------------------------------
 // mm_main.c
 // ============================================================================
 // ----------------------------------------------------------------------------
 // mm_main.c
 // ============================================================================
@@ -31,6 +31,11 @@ struct LaserInfo     laser;
 short          LX,LY, XS,YS, ELX,ELY;
 short          CT,Ct;
 
 short          LX,LY, XS,YS, ELX,ELY;
 short          CT,Ct;
 
+int            dSX, dSY;
+int            cSX, cSY;
+int            cSX2, cSY2;
+int            cFX, cFY;
+
 Pixel          pen_fg, pen_bg, pen_ray, pen_magicolor[2];
 int            color_status;
 
 Pixel          pen_fg, pen_bg, pen_ray, pen_magicolor[2];
 int            color_status;
 
@@ -95,7 +100,7 @@ short Sign[16] =
 
 char *element_info_mm[] =
 {
 
 char *element_info_mm[] =
 {
-  "empty space",                               /* 0 */
+  "empty space",                               // 0
   "mirror (0\xb0)",
   "mirror (11.25\xb0)",
   "mirror (22.5\xb0)",
   "mirror (0\xb0)",
   "mirror (11.25\xb0)",
   "mirror (22.5\xb0)",
@@ -105,7 +110,7 @@ char *element_info_mm[] =
   "mirror (67.5\xb0)",
   "mirror (78.75\xb0)",
   "mirror (90\xb0)",
   "mirror (67.5\xb0)",
   "mirror (78.75\xb0)",
   "mirror (90\xb0)",
-  "mirror (101.25\xb0)",                       /* 10 */
+  "mirror (101.25\xb0)",                       // 10
   "mirror (112.5\xb0)",
   "mirror (123.75\xb0)",
   "mirror (135\xb0)",
   "mirror (112.5\xb0)",
   "mirror (123.75\xb0)",
   "mirror (135\xb0)",
@@ -115,7 +120,7 @@ char *element_info_mm[] =
   "fixed steel polarizer (0\xb0)",
   "fixed steel polarizer (90\xb0)",
   "fixed steel polarizer (45\xb0)",
   "fixed steel polarizer (0\xb0)",
   "fixed steel polarizer (90\xb0)",
   "fixed steel polarizer (45\xb0)",
-  "fixed steel polarizer (135\xb0)",           /* 20 */
+  "fixed steel polarizer (135\xb0)",           // 20
   "Gregor McDuffin (looking right)",
   "Gregor McDuffin (looking up)",
   "Gregor McDuffin (looking left)",
   "Gregor McDuffin (looking right)",
   "Gregor McDuffin (looking up)",
   "Gregor McDuffin (looking left)",
@@ -125,7 +130,7 @@ char *element_info_mm[] =
   "opening exit",
   "open exit",
   "magic kettle",
   "opening exit",
   "open exit",
   "magic kettle",
-  "bomb",                                      /* 30 */
+  "bomb",                                      // 30
   "prism",
   "steel wall",
   "steel wall",
   "prism",
   "steel wall",
   "steel wall",
@@ -135,7 +140,7 @@ char *element_info_mm[] =
   "steel wall",
   "steel wall",
   "steel wall",
   "steel wall",
   "steel wall",
   "steel wall",
-  "steel wall",                                        /* 40 */
+  "steel wall",                                        // 40
   "steel wall",
   "steel wall",
   "steel wall",
   "steel wall",
   "steel wall",
   "steel wall",
@@ -145,7 +150,7 @@ char *element_info_mm[] =
   "steel wall",
   "wooden wall",
   "wooden wall",
   "steel wall",
   "wooden wall",
   "wooden wall",
-  "wooden wall",                               /* 50 */
+  "wooden wall",                               // 50
   "wooden wall",
   "wooden wall",
   "wooden wall",
   "wooden wall",
   "wooden wall",
   "wooden wall",
@@ -155,7 +160,7 @@ char *element_info_mm[] =
   "wooden wall",
   "wooden wall",
   "wooden wall",
   "wooden wall",
   "wooden wall",
   "wooden wall",
-  "wooden wall",                               /* 60 */
+  "wooden wall",                               // 60
   "wooden wall",
   "wooden wall",
   "wooden wall",
   "wooden wall",
   "wooden wall",
   "wooden wall",
@@ -165,7 +170,7 @@ char *element_info_mm[] =
   "ice wall",
   "ice wall",
   "ice wall",
   "ice wall",
   "ice wall",
   "ice wall",
-  "ice wall",                                  /* 70 */
+  "ice wall",                                  // 70
   "ice wall",
   "ice wall",
   "ice wall",
   "ice wall",
   "ice wall",
   "ice wall",
@@ -175,7 +180,7 @@ char *element_info_mm[] =
   "ice wall",
   "ice wall",
   "ice wall",
   "ice wall",
   "ice wall",
   "ice wall",
-  "amoeba wall",                               /* 80 */
+  "amoeba wall",                               // 80
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
@@ -185,7 +190,7 @@ char *element_info_mm[] =
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
-  "amoeba wall",                               /* 90 */
+  "amoeba wall",                               // 90
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
@@ -193,29 +198,29 @@ char *element_info_mm[] =
   "amoeba wall",
   "wooden block",
   "gray ball",
   "amoeba wall",
   "wooden block",
   "gray ball",
-  "beamer (0\xb0)",
-  "beamer (22.5\xb0)",
-  "beamer (45\xb0)",                           /* 100 */
-  "beamer (67.5\xb0)",
-  "beamer (90\xb0)",
-  "beamer (112.5\xb0)",
-  "beamer (135\xb0)",
-  "beamer (157.5\xb0)",
-  "beamer (180\xb0)",
-  "beamer (202.5\xb0)",
-  "beamer (225\xb0)",
-  "beamer (247.5\xb0)",
-  "beamer (270\xb0)",                          /* 110 */
-  "beamer (292.5\xb0)",
-  "beamer (315\xb0)",
-  "beamer (337.5\xb0)",
+  "teleporter (0\xb0)",
+  "teleporter (22.5\xb0)",
+  "teleporter (45\xb0)",                       // 100
+  "teleporter (67.5\xb0)",
+  "teleporter (90\xb0)",
+  "teleporter (112.5\xb0)",
+  "teleporter (135\xb0)",
+  "teleporter (157.5\xb0)",
+  "teleporter (180\xb0)",
+  "teleporter (202.5\xb0)",
+  "teleporter (225\xb0)",
+  "teleporter (247.5\xb0)",
+  "teleporter (270\xb0)",                      // 110
+  "teleporter (292.5\xb0)",
+  "teleporter (315\xb0)",
+  "teleporter (337.5\xb0)",
   "fuse",
   "pac man (starts moving right)",
   "pac man (starts moving up)",
   "pac man (starts moving left)",
   "pac man (starts moving down)",
   "polarizer (0\xb0)",
   "fuse",
   "pac man (starts moving right)",
   "pac man (starts moving up)",
   "pac man (starts moving left)",
   "pac man (starts moving down)",
   "polarizer (0\xb0)",
-  "polarizer (11.25\xb0)",                     /* 120 */
+  "polarizer (11.25\xb0)",                     // 120
   "polarizer (22.5\xb0)",
   "polarizer (33.75\xb0)",
   "polarizer (45\xb0)",
   "polarizer (22.5\xb0)",
   "polarizer (33.75\xb0)",
   "polarizer (45\xb0)",
@@ -225,7 +230,7 @@ char *element_info_mm[] =
   "polarizer (90\xb0)",
   "polarizer (101.25\xb0)",
   "polarizer (112.5\xb0)",
   "polarizer (90\xb0)",
   "polarizer (101.25\xb0)",
   "polarizer (112.5\xb0)",
-  "polarizer (123.75\xb0)",                    /* 130 */
+  "polarizer (123.75\xb0)",                    // 130
   "polarizer (135\xb0)",
   "polarizer (146.25\xb0)",
   "polarizer (157.5\xb0)",
   "polarizer (135\xb0)",
   "polarizer (146.25\xb0)",
   "polarizer (157.5\xb0)",
@@ -235,17 +240,17 @@ char *element_info_mm[] =
   "two-way polarizer (45\xb0)",
   "two-way polarizer (67.5\xb0)",
   "fixed mirror (0\xb0)",
   "two-way polarizer (45\xb0)",
   "two-way polarizer (67.5\xb0)",
   "fixed mirror (0\xb0)",
-  "fixed mirror (45\xb0)",                     /* 140 */
+  "fixed mirror (45\xb0)",                     // 140
   "fixed mirror (90\xb0)",
   "fixed mirror (135\xb0)",
   "reflecting stone lock",
   "key",
   "light bulb (dark)",
   "fixed mirror (90\xb0)",
   "fixed mirror (135\xb0)",
   "reflecting stone lock",
   "key",
   "light bulb (dark)",
-  "ligh bulb (glowing)",
+  "light bulb (glowing)",
   "bonus ball",
   "reflecting stone block",
   "wooden lock",
   "bonus ball",
   "reflecting stone block",
   "wooden lock",
-  "extra energy ball (full)",                  /* 150 */
+  "extra energy ball (full)",                  // 150
   "fixed wooden polarizer (0\xb0)",
   "fixed wooden polarizer (90\xb0)",
   "fixed wooden polarizer (45\xb0)",
   "fixed wooden polarizer (0\xb0)",
   "fixed wooden polarizer (90\xb0)",
   "fixed wooden polarizer (45\xb0)",
@@ -255,7 +260,7 @@ char *element_info_mm[] =
   "unused",
   "unused",
   "unused",
   "unused",
   "unused",
   "unused",
-  "letter ' '",                                        /* 160 */
+  "letter ' '",                                        // 160
   "letter '!'",
   "letter '\"'",
   "letter '#'",
   "letter '!'",
   "letter '\"'",
   "letter '#'",
@@ -265,7 +270,7 @@ char *element_info_mm[] =
   "letter '''",
   "letter '('",
   "letter ')'",
   "letter '''",
   "letter '('",
   "letter ')'",
-  "letter '*'",                                        /* 170 */
+  "letter '*'",                                        // 170
   "letter '+'",
   "letter ','",
   "letter '-'",
   "letter '+'",
   "letter ','",
   "letter '-'",
@@ -275,7 +280,7 @@ char *element_info_mm[] =
   "letter '1'",
   "letter '2'",
   "letter '3'",
   "letter '1'",
   "letter '2'",
   "letter '3'",
-  "letter '4'",                                        /* 180 */
+  "letter '4'",                                        // 180
   "letter '5'",
   "letter '6'",
   "letter '7'",
   "letter '5'",
   "letter '6'",
   "letter '7'",
@@ -285,7 +290,7 @@ char *element_info_mm[] =
   "letter ';'",
   "letter '<'",
   "letter '='",
   "letter ';'",
   "letter '<'",
   "letter '='",
-  "letter '>'",                                        /* 190 */
+  "letter '>'",                                        // 190
   "letter '?'",
   "letter '@'",
   "letter 'A'",
   "letter '?'",
   "letter '@'",
   "letter 'A'",
@@ -295,7 +300,7 @@ char *element_info_mm[] =
   "letter 'E'",
   "letter 'F'",
   "letter 'G'",
   "letter 'E'",
   "letter 'F'",
   "letter 'G'",
-  "letter 'H'",                                        /* 200 */
+  "letter 'H'",                                        // 200
   "letter 'I'",
   "letter 'J'",
   "letter 'K'",
   "letter 'I'",
   "letter 'J'",
   "letter 'K'",
@@ -305,7 +310,7 @@ char *element_info_mm[] =
   "letter 'O'",
   "letter 'P'",
   "letter 'Q'",
   "letter 'O'",
   "letter 'P'",
   "letter 'Q'",
-  "letter 'R'",                                        /* 210 */
+  "letter 'R'",                                        // 210
   "letter 'S'",
   "letter 'T'",
   "letter 'U'",
   "letter 'S'",
   "letter 'T'",
   "letter 'U'",
@@ -315,7 +320,7 @@ char *element_info_mm[] =
   "letter 'Y'",
   "letter 'Z'",
   "letter '\xc4'",
   "letter 'Y'",
   "letter 'Z'",
   "letter '\xc4'",
-  "letter '\xd6'",                             /* 220 */
+  "letter '\xd6'",                             // 220
   "letter '\xdc'",
   "letter '^'",
   "letter ''",
   "letter '\xdc'",
   "letter '^'",
   "letter ''",
@@ -325,7 +330,7 @@ char *element_info_mm[] =
   "letter ''",
   "letter ''",
   "letter ''",
   "letter ''",
   "letter ''",
   "letter ''",
-  "letter ''",                                 /* 230 */
+  "letter ''",                                 // 230
   "letter ''",
   "letter ''",
   "letter ''",
   "letter ''",
   "letter ''",
   "letter ''",
@@ -335,7 +340,7 @@ char *element_info_mm[] =
   "letter ''",
   "letter ''",
   "letter ''",
   "letter ''",
   "letter ''",
   "letter ''",
-  "mirror (0\xb0)",                            /* 240 */
+  "mirror (0\xb0)",                            // 240
   "mirror (11.25\xb0)",
   "mirror (22.5\xb0)",
   "mirror (33.75\xb0)",
   "mirror (11.25\xb0)",
   "mirror (22.5\xb0)",
   "mirror (33.75\xb0)",
@@ -345,7 +350,7 @@ char *element_info_mm[] =
   "mirror (78.75\xb0)",
   "mirror (90\xb0)",
   "mirror (101.25\xb0)",
   "mirror (78.75\xb0)",
   "mirror (90\xb0)",
   "mirror (101.25\xb0)",
-  "mirror (112.5\xb0)",                                /* 250 */
+  "mirror (112.5\xb0)",                                // 250
   "mirror (123.75\xb0)",
   "mirror (135\xb0)",
   "mirror (146.25\xb0)",
   "mirror (123.75\xb0)",
   "mirror (135\xb0)",
   "mirror (146.25\xb0)",
@@ -355,7 +360,7 @@ char *element_info_mm[] =
   "fixed wooden polarizer (22.5\xb0)",
   "fixed wooden polarizer (45\xb0)",
   "fixed wooden polarizer (67.5\xb0)",
   "fixed wooden polarizer (22.5\xb0)",
   "fixed wooden polarizer (45\xb0)",
   "fixed wooden polarizer (67.5\xb0)",
-  "fixed wooden polarizer (90\xb0)",           /* 260 */
+  "fixed wooden polarizer (90\xb0)",           // 260
   "fixed wooden polarizer (112.5\xb0)",
   "fixed wooden polarizer (135\xb0)",
   "fixed wooden polarizer (157.5\xb0)",
   "fixed wooden polarizer (112.5\xb0)",
   "fixed wooden polarizer (135\xb0)",
   "fixed wooden polarizer (157.5\xb0)",
@@ -365,7 +370,7 @@ char *element_info_mm[] =
   "fixed steel polarizer (67.5\xb0)",
   "fixed steel polarizer (90\xb0)",
   "fixed steel polarizer (112.5\xb0)",
   "fixed steel polarizer (67.5\xb0)",
   "fixed steel polarizer (90\xb0)",
   "fixed steel polarizer (112.5\xb0)",
-  "fixed steel polarizer (135\xb0)",           /* 270 */
+  "fixed steel polarizer (135\xb0)",           // 270
   "fixed steel polarizer (157.5\xb0)",
   "deflektor style wooden wall",
   "deflektor style wooden wall",
   "fixed steel polarizer (157.5\xb0)",
   "deflektor style wooden wall",
   "deflektor style wooden wall",
@@ -375,7 +380,7 @@ char *element_info_mm[] =
   "deflektor style wooden wall",
   "deflektor style wooden wall",
   "deflektor style wooden wall",
   "deflektor style wooden wall",
   "deflektor style wooden wall",
   "deflektor style wooden wall",
-  "deflektor style wooden wall",               /* 280 */
+  "deflektor style wooden wall",               // 280
   "deflektor style wooden wall",
   "deflektor style wooden wall",
   "deflektor style wooden wall",
   "deflektor style wooden wall",
   "deflektor style wooden wall",
   "deflektor style wooden wall",
@@ -385,7 +390,7 @@ char *element_info_mm[] =
   "deflektor style wooden wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style wooden wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
-  "deflektor style steel wall",                        /* 290 */
+  "deflektor style steel wall",                        // 290
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
@@ -395,7 +400,7 @@ char *element_info_mm[] =
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
-  "deflektor style steel wall",                        /* 300 */
+  "deflektor style steel wall",                        // 300
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
   "deflektor style steel wall",
@@ -405,7 +410,7 @@ char *element_info_mm[] =
   "refractor",
   "laser cannon (shooting right)",
   "laser cannon (shooting up)",
   "refractor",
   "laser cannon (shooting right)",
   "laser cannon (shooting up)",
-  "laser cannon (shooting left)",              /* 310 */
+  "laser cannon (shooting left)",              // 310
   "laser cannon (shooting down)",
   "laser receiver (directed right)",
   "laser receiver (directed up)",
   "laser cannon (shooting down)",
   "laser receiver (directed right)",
   "laser receiver (directed up)",
@@ -415,7 +420,7 @@ char *element_info_mm[] =
   "fibre optic (1b)",
   "fibre optic (2a)",
   "fibre optic (2b)",
   "fibre optic (1b)",
   "fibre optic (2a)",
   "fibre optic (2b)",
-  "fibre optic (3a)",                          /* 320 */
+  "fibre optic (3a)",                          // 320
   "fibre optic (3b)",
   "fibre optic (4a)",
   "fibre optic (4b)",
   "fibre optic (3b)",
   "fibre optic (4a)",
   "fibre optic (4b)",
@@ -425,7 +430,7 @@ char *element_info_mm[] =
   "rotating mirror (33.75\xb0)",
   "rotating mirror (45\xb0)",
   "rotating mirror (56.25\xb0)",
   "rotating mirror (33.75\xb0)",
   "rotating mirror (45\xb0)",
   "rotating mirror (56.25\xb0)",
-  "rotating mirror (67.5\xb0)",                        /* 330 */
+  "rotating mirror (67.5\xb0)",                        // 330
   "rotating mirror (78.75\xb0)",
   "rotating mirror (90\xb0)",
   "rotating mirror (101.25\xb0)",
   "rotating mirror (78.75\xb0)",
   "rotating mirror (90\xb0)",
   "rotating mirror (101.25\xb0)",
@@ -435,7 +440,7 @@ char *element_info_mm[] =
   "rotating mirror (146.25\xb0)",
   "rotating mirror (157.5\xb0)",
   "rotating mirror (168.75\xb0)",
   "rotating mirror (146.25\xb0)",
   "rotating mirror (157.5\xb0)",
   "rotating mirror (168.75\xb0)",
-  "rotating wooden polarizer (0\xb0)",         /* 340 */
+  "rotating wooden polarizer (0\xb0)",         // 340
   "rotating wooden polarizer (22.5\xb0)",
   "rotating wooden polarizer (45\xb0)",
   "rotating wooden polarizer (67.5\xb0)",
   "rotating wooden polarizer (22.5\xb0)",
   "rotating wooden polarizer (45\xb0)",
   "rotating wooden polarizer (67.5\xb0)",
@@ -445,77 +450,77 @@ char *element_info_mm[] =
   "rotating wooden polarizer (157.5\xb0)",
   "rotating steel polarizer (0\xb0)",
   "rotating steel polarizer (22.5\xb0)",
   "rotating wooden polarizer (157.5\xb0)",
   "rotating steel polarizer (0\xb0)",
   "rotating steel polarizer (22.5\xb0)",
-  "rotating steel polarizer (45\xb0)",         /* 350 */
+  "rotating steel polarizer (45\xb0)",         // 350
   "rotating steel polarizer (67.5\xb0)",
   "rotating steel polarizer (90\xb0)",
   "rotating steel polarizer (112.5\xb0)",
   "rotating steel polarizer (135\xb0)",
   "rotating steel polarizer (157.5\xb0)",
   "rotating steel polarizer (67.5\xb0)",
   "rotating steel polarizer (90\xb0)",
   "rotating steel polarizer (112.5\xb0)",
   "rotating steel polarizer (135\xb0)",
   "rotating steel polarizer (157.5\xb0)",
-  "red beamer (0\xb0)",
-  "red beamer (22.5\xb0)",
-  "red beamer (45\xb0)",
-  "red beamer (67.5\xb0)",
-  "red beamer (90\xb0)",                       /* 360 */
-  "red beamer (112.5\xb0)",
-  "red beamer (135\xb0)",
-  "red beamer (157.5\xb0)",
-  "red beamer (180\xb0)",
-  "red beamer (202.5\xb0)",
-  "red beamer (225\xb0)",
-  "red beamer (247.5\xb0)",
-  "red beamer (270\xb0)",
-  "red beamer (292.5\xb0)",
-  "red beamer (315\xb0)",                      /* 370 */
-  "red beamer (337.5\xb0)",
-  "yellow beamer (0\xb0)",
-  "yellow beamer (22.5\xb0)",
-  "yellow beamer (45\xb0)",
-  "yellow beamer (67.5\xb0)",
-  "yellow beamer (90\xb0)",
-  "yellow beamer (112.5\xb0)",
-  "yellow beamer (135\xb0)",
-  "yellow beamer (157.5\xb0)",
-  "yellow beamer (180\xb0)",                   /* 380 */
-  "yellow beamer (202.5\xb0)",
-  "yellow beamer (225\xb0)",
-  "yellow beamer (247.5\xb0)",
-  "yellow beamer (270\xb0)",
-  "yellow beamer (292.5\xb0)",
-  "yellow beamer (315\xb0)",
-  "yellow beamer (337.5\xb0)",
-  "green beamer (0\xb0)",
-  "green beamer (22.5\xb0)",
-  "green beamer (45\xb0)",                     /* 390 */
-  "green beamer (67.5\xb0)",
-  "green beamer (90\xb0)",
-  "green beamer (112.5\xb0)",
-  "green beamer (135\xb0)",
-  "green beamer (157.5\xb0)",
-  "green beamer (180\xb0)",
-  "green beamer (202.5\xb0)",
-  "green beamer (225\xb0)",
-  "green beamer (247.5\xb0)",
-  "green beamer (270\xb0)",                    /* 400 */
-  "green beamer (292.5\xb0)",
-  "green beamer (315\xb0)",
-  "green beamer (337.5\xb0)",
-  "blue beamer (0\xb0)",
-  "blue beamer (22.5\xb0)",
-  "blue beamer (45\xb0)",
-  "blue beamer (67.5\xb0)",
-  "blue beamer (90\xb0)",
-  "blue beamer (112.5\xb0)",
-  "blue beamer (135\xb0)",                     /* 410 */
-  "blue beamer (157.5\xb0)",
-  "blue beamer (180\xb0)",
-  "blue beamer (202.5\xb0)",
-  "blue beamer (225\xb0)",
-  "blue beamer (247.5\xb0)",
-  "blue beamer (270\xb0)",
-  "blue beamer (292.5\xb0)",
-  "blue beamer (315\xb0)",
-  "blue beamer (337.5\xb0)",
-  "unknown",                                   /* 420 */
+  "red teleporter (0\xb0)",
+  "red teleporter (22.5\xb0)",
+  "red teleporter (45\xb0)",
+  "red teleporter (67.5\xb0)",
+  "red teleporter (90\xb0)",                   // 360
+  "red teleporter (112.5\xb0)",
+  "red teleporter (135\xb0)",
+  "red teleporter (157.5\xb0)",
+  "red teleporter (180\xb0)",
+  "red teleporter (202.5\xb0)",
+  "red teleporter (225\xb0)",
+  "red teleporter (247.5\xb0)",
+  "red teleporter (270\xb0)",
+  "red teleporter (292.5\xb0)",
+  "red teleporter (315\xb0)",                  // 370
+  "red teleporter (337.5\xb0)",
+  "yellow teleporter (0\xb0)",
+  "yellow teleporter (22.5\xb0)",
+  "yellow teleporter (45\xb0)",
+  "yellow teleporter (67.5\xb0)",
+  "yellow teleporter (90\xb0)",
+  "yellow teleporter (112.5\xb0)",
+  "yellow teleporter (135\xb0)",
+  "yellow teleporter (157.5\xb0)",
+  "yellow teleporter (180\xb0)",               // 380
+  "yellow teleporter (202.5\xb0)",
+  "yellow teleporter (225\xb0)",
+  "yellow teleporter (247.5\xb0)",
+  "yellow teleporter (270\xb0)",
+  "yellow teleporter (292.5\xb0)",
+  "yellow teleporter (315\xb0)",
+  "yellow teleporter (337.5\xb0)",
+  "green teleporter (0\xb0)",
+  "green teleporter (22.5\xb0)",
+  "green teleporter (45\xb0)",                 // 390
+  "green teleporter (67.5\xb0)",
+  "green teleporter (90\xb0)",
+  "green teleporter (112.5\xb0)",
+  "green teleporter (135\xb0)",
+  "green teleporter (157.5\xb0)",
+  "green teleporter (180\xb0)",
+  "green teleporter (202.5\xb0)",
+  "green teleporter (225\xb0)",
+  "green teleporter (247.5\xb0)",
+  "green teleporter (270\xb0)",                        // 400
+  "green teleporter (292.5\xb0)",
+  "green teleporter (315\xb0)",
+  "green teleporter (337.5\xb0)",
+  "blue teleporter (0\xb0)",
+  "blue teleporter (22.5\xb0)",
+  "blue teleporter (45\xb0)",
+  "blue teleporter (67.5\xb0)",
+  "blue teleporter (90\xb0)",
+  "blue teleporter (112.5\xb0)",
+  "blue teleporter (135\xb0)",                 // 410
+  "blue teleporter (157.5\xb0)",
+  "blue teleporter (180\xb0)",
+  "blue teleporter (202.5\xb0)",
+  "blue teleporter (225\xb0)",
+  "blue teleporter (247.5\xb0)",
+  "blue teleporter (270\xb0)",
+  "blue teleporter (292.5\xb0)",
+  "blue teleporter (315\xb0)",
+  "blue teleporter (337.5\xb0)",
+  "unknown",                                   // 420
 
   /*
   "-------------------------------",
 
   /*
   "-------------------------------",