Módulo Stickman Fight
El Módulo Stickman Fight (@zumito-team/stickmanfight-module) proporciona un único comando que enfrenta a dos usuarios de Discord (o miembros aleatorios) en una batalla animada de stick figures. El resultado es un GIF multi-frame con poses de pelea, efectos de partículas y un dramático final K.O.
Instalación
Sección titulada «Instalación»npm install @zumito-team/stickmanfight-moduleAgrega a tu zumito.config.ts:
bundles: ['@zumito-team/stickmanfight-module']Qué proporciona
Sección titulada «Qué proporciona»Comando Stickmanfight
Sección titulada «Comando Stickmanfight»El comando /stickmanfight con argumentos:
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
user1 | user | No | Primer luchador. Miembro aleatorio si se omite. |
user2 | user | No | Segundo luchador. Miembro aleatorio si se omite. |
Comportamiento:
- Valida que la guild tenga al menos 2 miembros no-bot.
- Resuelve los luchadores: usuarios especificados o elige dos miembros aleatorios.
- Determina aleatoriamente un ganador.
- Crea una instancia
CanvasUtils(500×300, modo GIF, 100ms de retraso). - Carga los avatares de ambos usuarios (64×64px).
- Renderiza una secuencia de animación de ~17 frames:
- Intro (3 frames) — Aparece el texto “FIGHT!”.
- Aproximación (4 frames) — Ambos stickmen caminan hacia el centro.
- Flash (2 frames) — Efecto de destello de combate.
- Combate (8 frames) — Poses de ataque, defensa y golpe alternando entre luchadores.
- Pre-KO (3 frames) — El perdedor se tambalea.
- K.O. (5 frames) — Knockout dramático con partículas doradas y texto “K.O.!”.
- Devuelve el GIF como attachment de Discord con un embed anunciando al ganador.
Detalles de animación
Sección titulada «Detalles de animación»Las figuras usan poses distintas para cada fase:
| Pose | Descripción |
|---|---|
normal | Postura de pie con brazos a los lados. |
attack | Un brazo extendido hacia adelante (golpeando). |
defend | Brazos cruzados al frente (bloqueando). |
hit | Inclinado hacia atrás (recibiendo daño). |
ko | Caído (derrotado). |
Efectos visuales:
- Fondo — Gradiente vertical (azul cielo a marrón tierra).
- Partículas — Efectos de chispas doradas alrededor del texto K.O.
Configuración
Sección titulada «Configuración»El módulo acepta un objeto de configuración opcional:
import { StickmanfightModule } from '@zumito-team/stickmanfight-module';
new StickmanfightModule({ embedColor: 0x5865f2 // Color del embed de Discord (hex)});| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
embedColor | number | 0x5865f2 | Color hexadecimal para el embed de resultado. |
Traducciones
Sección titulada «Traducciones»El comando soporta inglés y español:
| Clave | EN | ES |
|---|---|---|
description | ”Make two members fight in an epic stickman battle!" | "Haz que dos miembros peleen en una batalla épica!” |
result | "The winner is **{winner}**!" | "El ganador es **{winner}**!" |
Archivos de traducción:
translations/command/stickmanfight/en.jsontranslations/command/stickmanfight/es.json
Extensión
Sección titulada «Extensión»Secuencias de animación personalizadas
Sección titulada «Secuencias de animación personalizadas»La animación está definida en la clase Stickmanfight. Puedes extenderla para crear peleas personalizadas:
class StickmanfightPersonalizado extends Stickmanfight { async execute(params: CommandParameters) { const canvas = new CanvasUtils({ width: 600, height: 400, isGif: true, delay: 80 }); // ... frames de animación personalizados ... }}Helpers de dibujo personalizados
Sección titulada «Helpers de dibujo personalizados»Las funciones helper privadas (drawStickman, drawBackground, drawParticles) están definidas dentro del comando. Puedes extraerlas para reutilizarlas:
import { CanvasUtils } from '@zumito-team/canvas-module';
function dibujarStickman(canvas: CanvasUtils, x: number, y: number, avatar: Image, pose: string) { const ctx = canvas.getContext(); // Lógica personalizada de dibujo de stickman}Agregar más poses o efectos
Sección titulada «Agregar más poses o efectos»Extiende el código fuente del módulo para agregar nuevas poses de combate, animaciones de victoria o efectos especiales:
- Nuevas poses → agrega ramas de dibujo en la lógica de renderizado del stickman.
- Nuevos efectos → usa
canvas.drawParticles()para efectos de chispas o agregadrawExplosion(),drawSmoke(), etc. - Arenas de fondo → reemplaza el gradiente con una imagen de fondo cargada.
Dependencias
Sección titulada «Dependencias»@zumito-team/canvas-module— ParaCanvasUtilsy carga de imágenes.zumito-framework
Módulos relacionados
Sección titulada «Módulos relacionados»- Módulo Canvas — Proporciona las utilidades de canvas usadas para la animación.