fogón

← Gear3D assetfogon/daga

Daga

by fogonCC02734 blocks
DagaDrag to turn it
// «Daga» · gpt-6-sol (medium)
// A dagger: a short pointed double-edged steel blade, a curved brass crossguard, a black grip with silver wire wrap and a small round silver pommel. Make it chunky so it is not too thin. It LIES FLAT horizontally on the ground (z=0), as a chunky toy-like item seen from above: tip/front toward -y, handle/back toward +y, centered on x, using most of the grid along y, at least 4-5 blocks thick so it reads at small size. No hands, no stand, no base plate.

const steelDark = "#687580";
const steelMid = "#a9b6bf";
const steelLight = "#dce5e9";
const steelEdge = "#eef2f0";
const brassDark = "#86602b";
const brassMid = "#be8a39";
const brassLight = "#edbf61";
const black = "#202329";

// Blade: broad near the guard, tapering to a short, sharp point.
for (let y = 3; y <= 29; y++) {
  let w;
  if (y <= 13) w = Math.max(0, Math.round((y - 3) * 0.65));
  else if (y <= 22) w = 7;
  else w = Math.max(4, 7 - Math.floor((y - 22) / 2));

  for (let x = 24 - w; x <= 24 + w; x++) {
    const d = Math.abs(x - 24);
    const top = d <= 1 ? 6 : d <= w - 3 ? 5 : d < w ? 4 : 3;
    for (let z = 0; z <= top; z++) {
      let color = z <= 1 ? steelDark : x < 24 ? steelLight : steelMid;
      if (d === w && w > 1) color = z >= 2 ? steelEdge : steelDark;
      if (d <= 1 && z >= 5) color = steelEdge;
      if (z >= 3 && d > 1 && d < w && rand() < 0.07) {
        color = x < 24 ? steelMid : steelLight;
      }
      set(x, y, z, color);
    }
  }
}

// Squared-off ricasso disappears beneath the crossguard.
box(21, 27, 0, 27, 31, 5, steelDark);
box(22, 27, 5, 26, 29, 6, steelMid);
line(24, 7, 6, 24, 26, 6, 0, steelLight);

// Curved brass arms sweep toward the blade at their outer tips.
for (let x = 13; x <= 35; x++) {
  const reach = Math.abs(x - 24);
  const cy = 30 - Math.floor(Math.max(0, reach - 3) * 0.43);
  const end = reach >= 10;
  for (let y = cy - (end ? 2 : 1); y <= cy + 1; y++) {
    for (let z = 0; z <= (end ? 7 : 6); z++) {
      let color = z <= 1 || y === cy + 1 ? brassDark : brassMid;
      if (z >= 5 || y === cy - (end ? 2 : 1)) color = brassLight;
      if (z >= 3 && z < 5 && rand() < 0.06) color = brassLight;
      set(x, y, z, color);
    }
  }
}

// Raised guard boss and its dark inset.
box(21, 29, 5, 27, 32, 7, brassDark);
box(22, 29, 7, 26, 31, 7, brassLight);
box(23, 30, 8, 25, 30, 8, brassMid);
set(24, 30, 8, "#f5d788");

// Rounded black grip, with a subtly faceted top.
for (let y = 33; y <= 42; y++) {
  for (let x = 21; x <= 27; x++) {
    const side = Math.abs(x - 24);
    const top = side === 3 ? 3 : side === 2 ? 4 : 5;
    for (let z = 0; z <= top; z++) {
      let color = side === 3 || z <= 1 ? "#11161b" : black;
      if (z === top && side <= 1) color = "#343940";
      if (z === top && rand() < 0.08) color = "#42474b";
      set(x, y, z, color);
    }
  }
}

// Diagonal silver wire bands wrap over the grip and down its sides.
for (let band = 0; band < 4; band++) {
  const baseY = 34 + band * 2;
  for (let x = 21; x <= 27; x++) {
    const y = baseY + (x >= 25 ? 1 : 0);
    const side = Math.abs(x - 24);
    const z = side === 3 ? 3 : side === 2 ? 4 : 5;
    set(x, y, z, side === 3 ? "#89949b" : "#cbd4d7");
    if (side === 3) set(x, y, 2, "#89949b");
  }
}

// Narrow collar and chunky, round silver pommel.
box(21, 42, 0, 27, 43, 5, "#78838a");
box(22, 42, 5, 26, 43, 6, "#d5dce0");

ellipsoid(24, 44, 3, 4, 2.5, 3, "#89969f");
for (let y = 42; y <= 46; y++) {
  for (let x = 20; x <= 28; x++) {
    for (let z = 0; z <= 6; z++) {
      if (get(x, y, z) === "#89969f") {
        if (z >= 4 && y <= 45) set(x, y, z, steelLight);
        else if (z <= 1 || y === 46) set(x, y, z, steelDark);
      }
    }
  }
}
box(23, 44, 6, 25, 45, 6, steelEdge);