--- .gil/xlib_draw.c.9	2026-02-08 08:08:03.155982429 +0100
+++ .gil/xlib_draw.c.10	2026-02-10 12:57:59.806994608 +0100
@@ -34,7 +34,8 @@
   RECT,
   CIRC,
   SIRC,
-  TRIA
+  TRIA,
+  MANT
 };
 
 unsigned int sq_table[80];
@@ -65,6 +66,32 @@
   }
 }
 
+struct _plot plots[110];
+int active_plots[110];
+
+#define MUM_PLOTS 110
+
+void
+init_plots()
+{
+  for (int d = 0; d < MUM_PLOTS; d++) {
+    active_plots[d] = 0;
+  }
+}
+
+unsigned int
+count_plots()
+{
+  unsigned int num;
+  num = 0;
+  for (int d = 0; d < MUM_PLOTS; d++) {
+    if (active_plots[d] == 1) {
+      num++;
+    }
+  }
+  return num;
+}
+
 int
 collide(int x1, int y1, int w, int h, int x, int y)
 {
@@ -205,6 +232,15 @@
         if (keysym == XK_t) {
           draw_mode = TRIA;
         }
+        if (keysym == XK_m) {
+          draw_mode = MANT;
+          init_plots();
+        }
+        if (keysym == XK_n) {
+          unsigned int num_plots;
+          num_plots = count_plots();
+          draw_mana(img, plots, num_plots);
+        }
       } break;
       case ClientMessage:
         if ((Atom)ev.xclient.data.l[0] == wm_delete) {
@@ -225,6 +261,25 @@
           }
         }
         break;
+      case MANT:
+        if (clic.x != -1 && clic.y != -1) {
+          if (collide(0, 0, W, H, clic.x, clic.y)) {
+            int d;
+            for (d = 0; d < MUM_PLOTS; d++) {
+              if (active_plots[d] == 0) {
+                active_plots[d] = 1;
+                plots[d].x = clic.x;
+                plots[d].y = clic.y;
+                plots[d].v = v;
+                printf("# Mant: %d,%d ; %d\n", clic.x, clic.y, v);
+                clic.x = -1;
+                clic.y = -1;
+                break;
+              }
+            }
+          }
+        }
+        break;
       case DRAW:
         if (pressed == 1) {
           if (collide(0, 0, W, H, motion.x, motion.y)) {
