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 defectoLa 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
}| Skin | Emoji | Efecto |
|---|---|---|
| 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
- skins ↔ lanzamiento: 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)