Cada arma tiene una skin equipada (un emoji): punoSkinId, punalSkinId, batSkinId. Se compran en el hub de avatar y se resuelven a emojis al crear el jugador:

skinEmojis: { puno: '👊', punal: '🔪', bate: '🏏' }   // por defecto

La mayoría son puramente cosméticas — cambian cómo se ve tu arma, no cómo pega. Salvo una excepción crítica.

Las skins protectoras de puño

Tres skins de 👊 tienen un efecto mecánico real: te protegen de romperte la mano al lanzar el puño.

const PROTECTED_FIST_EMOJIS = ['🧤', '🥊', '🪬']  // Guante, Manopla, Mano mágica
const isProtected = PROTECTED_FIST_EMOJIS.includes(player.skinEmojis.puno)
if (!isProtected && Math.random() < 0.3) {
  player.handBroken = true   // 30% de romperte la mano
}
SkinEmojiEfecto
Guante🧤Anula el riesgo de rotura al lanzar puño
Manopla🥊Íd.
Mano mágica🪬Íd.
(cualquier otra)👊 ✊ …Cosmética — 30% de romperte la mano al lanzar puño

Una skin puede ser una decisión de build

Esto rompe la frontera “cosmético vs funcional”: equipar 🧤 no es estética, es habilitar el lanzamiento de puño sin riesgo. Es el gancho de diseño más interesante del sistema de skins — y un sitio natural para meter más objetos con efecto leve.

Tensión de diseño

  • skinslanzamiento: las protectoras existen para el lanzamiento. Sin lanzar, dan igual.
  • Es la semilla de un sistema mayor → ver objetos-funcionales y la lista canónica en perks-y-skins: cada skin del catálogo tiene un efecto mecánico (daño, veneno, críticos, aturdir, esquiva, defensa…).

Detalle de implementación

Al lanzar, el cambio de skin se difiere a la siguiente ronda (pendingSkinSwap), para no romper la animación del resultado. Si no hay skin distinta disponible, se conserva el ítem actual del inventario.

Conexiones

  • objetos-funcionales — el tier de skins con efecto mecánico
  • lanzamiento — el único sitio donde una skin cambia el resultado
  • armas — las skins se equipan por arma
  • Hub de economía: avatar / shop / battlepass (todo redirige a /avatar)