feat: 1v9 convertite en leyenda LoL career simulator

This commit is contained in:
Renato
2026-08-03 05:54:46 +02:00
commit 472a250782
75 changed files with 2464 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
# Python
__pycache__/
*.pyc
*.pyo
# Node
node_modules/
# Testing temp
/tmp/
# Local caches
data/
*.log
# OS
.DS_Store
Thumbs.db
# SDD artifacts (local-only, not part of the game)
.atl/
+67
View File
@@ -0,0 +1,67 @@
# 1v9 — Convertite en Leyenda
Simulador de carrera de **pro player de League of Legends** inspirado en el juego viral
[Copero](https://copero.com.ar/juegos/simulador-carrera). Clon mecánico 1:1 re-tematizado a LoL:
de la challenger a los playoffs, del tilt al Worlds. Cada carrera dura ~2 minutos y es 100% distinta.
**Live:** https://lolero.cbcren.online
---
## Qué es
Una **historia interactiva tipo "elige tu propia aventura"** (no un simulador de gameplay).
Creás un player, elegís una oferta de equipo, y en cada split tomás una decisión que afecta tu
estadística y tu carrera. El azar, ponderado por tus stats, decide cómo evoluciona todo.
### Características
- **5 roles**: Top, Jungla, Mid, ADC, Support.
- **6 regiones**: LCK, LPL, LEC, LCS, LTA, VCS (cada una con umbral de dificultad propio).
- **68 equipos reales** con sus logos (con permiso de las orgs).
- **5 competencias internacionales**: First Stand, MSI, EWC, Asian Games, Worlds.
- **Títulos regionales** (primera y segunda división) y **premios individuales** (Guante de Oro, Rey del Farmeo, MVP del Split, etc.).
- **Fichajes, ascensos, descensos, préstamos** — pero con cadencia realista (no se cambia de equipo en cada split).
- **Sistema de ELO** (0-99), market value, KDA, pentakills.
- **Pantalla final compartible** descargable como imagen (canvas nativo).
- **100% offline**: un solo archivo, sin build, sin backend, sin login.
---
## Cómo jugar
1. Abrí `index.html` en cualquier navegador (o andá a **https://lolero.cbcren.online**).
2. **Armá tu player**: nick, nº de invocador, mano, región y rol.
3. **Elegí tu oferta**: 3 organizaciones de tu liga te llaman para arrancar.
4. **Jugá los splits**: en cada split tomás una decisión (2-4 opciones con probabilidades).
5. **Competí**: First Stand (sp2), MSI (sp4), EWC (sp6), Asian Games (sp8), Worlds (split final).
6. **Retirate**: desde el split 6 podés colgar el mouse, o terminás la carrera al final.
7. **Compartí**: descargá la imagen de resumen con tu carrera completa.
---
## Estructura
```
lolero/
├── index.html # El juego completo (HTML + CSS + JS inline, autocontenido)
├── logos/ # 68 logos de equipos (png/webp/svg)
├── docs/
│ ├── ARCHITECTURE.md # Arquitectura del juego y mecánicas
│ ├── TESTING.md # El workflow de testing que usamos
│ └── DEPLOY.md # Deploy a lolero.cbcren.online
└── README.md # Este archivo
```
---
## Requisitos
- **Producto**: ningún requisito. `index.html` + `logos/` en cualquier servidor estático.
- **Desarrollo/Testing**: Node.js ≥ 18 (para `node --check`), Python 3 + Playwright (para tests E2E).
---
## Licencia
Proyecto fan-made sin fines de lucro. Los logos de equipos son de sus respectivos dueños.
+122
View File
@@ -0,0 +1,122 @@
# Arquitectura — 1v9: Convertite en Leyenda
## Visión general
Es un **juego de decisiones** (historia interactiva) en un **único archivo** `index.html`
(HTML + CSS + JS inline, sin dependencias externas para jugar). Todo el estado vive en memoria
durante la partida; no hay persistencia obligatoria (un `localStorage` opcional guarda el
"Salón de la fama" con las mejores carreras).
```
Landing → Creación → Oferta de academia → Loop de carrera (N splits) → Resumen final (compartible)
```
---
## Flujo de pantallas
| Pantalla | Rol |
|----------|-----|
| **Landing** | Presentación + botón "Convertite en leyenda" + Salón de la fama |
| **Creación** | Nick, nº de invocador, mano, región, rol |
| **Oferta de academia** | 3 equipos aleatorios de tu liga para elegir |
| **Carrera (Screen A)** | Panel de jugador + decisión + timeline, 2 columnas |
| **Resumen (Screen B)** | 3 paneles + grid de orgs + botón "Jugar de nuevo" |
---
## Datos del juego
### REGIONES
`LCK / LPL / LEC / LCS / LTA / VCS`, cada una con:
- `code` (KR/CN/EU/NA/AM/VN), `flag`, `country`, `flavor`.
- `threshold`: umbral de ELO para competir en su primera división (LCK=68…VCS=50).
### TEAMS (68 equipos reales)
`{ id, name, div }``div: 1` = primera división, `div: 2` = segunda/academia.
Los logos se resuelven con `LOGO_EXT[id]``logos/<id>.<ext>`.
### ROLES
`{ em, fl, kill, ast, death, pentaW }` — coeficientes de farmeo/perf de cada rol.
### EVENTS (26 eventos de decisión)
Cada evento: `{ cat, title, ctx, opts[] }`.
Cada opción: `{ t, d, risk, pos, neg, x? }`
- `d`: deltas a stats (`mecanica, vision, farmeo, sinergia, marca`).
- `risk`: probabilidad de fracaso (0-1).
- `pos`/`neg`: textos de resultado (éxito/fracaso).
- `x`: efectos extra (`rolChange`, `transfer`).
### COMPETITIONS (5 internacionales)
`{ split, ic, flavor }` — First Stand (2), MSI (4), EWC (6), Asian Games (8), Worlds (último).
---
## Estado de partida (`G`)
```js
{
nick, num, hand, region, role,
teamId, div,
stats: { mecanica, vision, farmeo, sinergia, marca },
split, totalSplits,
kills, assists, deaths, games, penta,
value, maxValue, salary, ratingMax,
teamTitles, indTitles, intl,
teams, events, history,
regSelect: { games, kills, ast, apps },
retired, retiring, finalRating
}
```
---
## Mecánicas clave
### Rating / ELO
Media ponderada de las 5 stats (mecánica 1.15, farmeo 1.05, sinergia 1.0, visión 0.95, marca 0.85),
clamp `[40, 99]`.
### Market value
`50000 * 10^((rating-40)*0.055)` × bonus por títulos, redondeado a `10k`.
### Crecimiento pasivo
Cada split suma `+0.48 + rand*0.2` (+ bonus por winRate) a cada stat; rendimiento malo reduce.
### Decisiones
`ok = Math.random() >= (risk + 0.03)`. Éxito: `+delta*2.6`. Fracaso: `-delta*2.6*0.9`.
### Fichajes
Solo desde **split 4**, con ~22% de chance por split y `rating >= threshold-4`.
Ofertas de otros equipos (misma región o extranjeros de primera si el rating alcanza).
### Competencias internacionales
**Solo equipos de primera división** (un equipo de 2ª no va a MSI/Worlds). Bracket de 4 rondas
con probabilidad por rating: grupos → cuartos → semis → final.
### Títulos
- **Regional**: cada split par, si `rating >= threshold-X` (primera o segunda división).
- **Individuales**: Guante de Oro (ELO≥62), Rey del Farmeo (farmeo≥60), Carry Definitivo (penta≥1), Community Darling (marca≥58), MVP del Split.
---
## UI (estilo Copero)
Design tokens en `:root`:
```
--bg-base:#0a0a0c --bg-card:#18181b --bg-card-alt:#1f1f23 --bg-row-active:#0e3a3f
--accent-ovr:#d9730a --accent-role:#7c3aed
--success:#22c55e --danger:#ef4444 --border-subtle:#27272a
```
- **Screen A**: 2 columnas (3fr/2fr). Izquierda: badge ELO + panel jugador + stats + logros + decisión.
Derecha: timeline de carrera (SPLIT/ORG/ELO/GAM/KIL/AST) con fila activa teal y filas futuras grises.
- **Screen B**: 3 paneles (identidad, selección regional, premios) + grid de orgs + botón "Jugar de nuevo".
- **Responsive**: <768px colapsa la timeline (default cerrada) y apila a 1 columna.
---
## Export de imagen
Un `<canvas>` 1080×1920 dibuja el resumen completo (dark bg, badges ELO, stats, títulos, orgs)
y se descarga como PNG. Es el mecanismo de viralidad del juego.
+100
View File
@@ -0,0 +1,100 @@
# Deploy — lolero.cbcren.online
El sitio corre en un servidor estático (`python3 -m http.server`) en el puerto **8899**,
protegido por un reverse proxy **Caddy** con TLS automático.
```
Internet → Caddy (80/443, TLS automático)
└─ lolero.cbcren.online → reverse_proxy 172.20.0.1:8899
└─ python3 -m http.server (systemd: lolero.service)
├─ index.html
└─ logos/ (68 archivos)
```
---
## 1. Servir los archivos (systemd)
```ini
# /etc/systemd/system/lolero.service
[Unit]
Description=1v9 Convertite en Leyenda - static site
After=network.target
[Service]
User=ren
WorkingDirectory=/home/ren/lolero
ExecStart=/usr/bin/python3 -m http.server 8899 --bind 0.0.0.0
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
```
```bash
sudo cp lolero.service /etc/systemd/system/lolero.service
sudo systemctl daemon-reload
sudo systemctl enable --now lolero
```
> **Nota:** `http.server` lee los archivos del disco en cada request, así que **no hace falta
> reiniciar el servicio** cuando se actualiza `index.html`. El cambio se sirve solo.
## 2. Caddy (reverse proxy)
El Caddyfile activo está en `/home/ren/immich/Caddyfile` (es un bind mount del contenedor
`caddy-ingress`, no `/etc/caddy/Caddyfile`). Se agregó:
```
lolero.cbcren.online {
reverse_proxy 172.20.0.1:8899
encode gzip
header {
X-Frame-Options SAMEORIGIN
X-Content-Type-Options nosniff
}
log {
output file /data/caddy/lolero.cbcren.online.log
}
}
```
Validar y recargar:
```bash
docker exec caddy-ingress caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile
docker exec caddy-ingress caddy reload --config /etc/caddy/Caddyfile --adapter caddyfile
```
> `172.20.0.1` es el gateway de la red docker `caddy` (donde corre `caddy-ingress`).
> Cualquier proxy hacia el host usa esa IP.
## 3. DNS
Registro A: `lolero.cbcren.online → 194.163.191.200` (ya creado). Caddy emite el certificado
Let's Encrypt automáticamente en el primer request.
## 4. Verificación
```bash
curl -sk -o /dev/null -w "%{http_code}\n" https://lolero.cbcren.online/ # 200
curl -sk -o /dev/null -w "%{http_code}\n" https://lolero.cbcren.online/logos/T1.png # 200
```
## 5. Actualizar contenido
Reemplazar `/home/ren/lolero/index.html` y/o `/home/ren/lolero/logos/`. No requiere restart.
## 6. Rollback
```bash
sudo systemctl stop lolero # baja el servicio
# el 503 de Caddy se devuelve mientras tanto; subirlo de nuevo con:
sudo systemctl start lolero
```
## Notas de puertos
El puerto **8899** se eligió libre (verificado con `ss -tln`). No se tocan puertos en uso
(8080, 8090, 3000, 8000, etc.).
+49
View File
@@ -0,0 +1,49 @@
# Próximos pasos — 1v9: Convertite en Leyenda
Estado actual y mejoras posibles, en orden de impacto.
## ✅ Hecho
- [x] Juego completo en un solo archivo (`index.html`), autocontenido, offline.
- [x] 68 equipos reales con logos, 5 roles, 6 regiones.
- [x] 26 eventos de decisión en 6 categorías.
- [x] 5 competencias internacionales (First Stand, MSI, EWC, Asian Games, Worlds).
- [x] Títulos regionales (1ª y 2ª) + premios individuales.
- [x] Fichajes con cadencia realista (≥ split 4, ~2/carrera).
- [x] Gating: equipos de 2ª división no van a internacionales.
- [x] UI estilo Copero (dark dashboard, badges, pills, timeline).
- [x] Responsive mobile/desktop, timeline colapsable.
- [x] Export de imagen 1080×1920 compartible.
- [x] Deploy en https://lolero.cbcren.online (Caddy + systemd + puerto 8899).
- [x] Documentación (README, ARCHITECTURE, TESTING, DEPLOY).
## 🔜 Ideas de mejora
### Gameplay
- [ ] Más eventos por categoría (replayability).
- [ ] Más premios individuales (Mejor Novato, MVP del Split con más variantes).
- [ ] Eventos de "momento" (ganar/revivir un BO5, finales emocionantes).
- [ ] Sistema de lesiones/visa más ligado a la selección regional.
### UI / UX
- [ ] Animaciones de transición entre pantallas.
- [ ] Sonido (efectos mínimos, sin dependencias externas).
- [ ] Soporte de idioma (EN) según el locale del navegador.
- [ ] Tema claro opcional.
### Datos
- [ ] Más equipos de segunda división por región.
- [ ] Verificar logos nuevos si cambian (los `_std` de Liquidpedia son pequeños).
### Distribución / viralidad
- [ ] PWA (manifest + service worker) para instalación y offline total.
- [ ] Open Graph / tarjetas de compartir (el export ya es la imagen).
- [ ] Analítica ligera (opcional, sin trackeo de datos personales).
### Infra
- [ ] HTTPS ya resuelto por Caddy. Considerar caché de logos con `Cache-Control` largo.
- [ ] Backup del repo en Gitea (este repo).
## Contribución
Ver `TESTING.md` para el workflow de verificación antes de mergear cambios.
+109
View File
@@ -0,0 +1,109 @@
# Testing — 1v9: Convertite en Leyenda
Este documento describe el workflow de testing que usamos para verificar el juego de punta a punta.
Es reproducible en cualquier máquina con Node.js ≥18 y Python 3 + Playwright.
---
## 1. Validación de sintaxis JS
Extraemos el `<script>` inline y lo chequeamos con Node (sin ejecutarlo):
```bash
python3 -c "import re; open('/tmp/game.js','w').write(re.search(r'<script>(.*?)</script>', open('index.html').read(), re.S).group(1))"
node --check /tmp/game.js && echo "JS OK"
```
Esto detecta errores de sintaxis antes de tocar el navegador.
---
## 2. Smoke test local (Playwright)
Levantamos un servidor estático y jugamos una carrera completa con un bot, detectando
errores de consola y fallos de red:
```bash
python3 -m http.server 8899 --bind 0.0.0.0 &
```
Un script Playwright (chromium headless) que:
1. Abre la página en viewport móvil (390×844).
2. Completa la creación de player.
3. Elige una oferta de academia.
4. Juega hasta el resumen (clic en opciones/continuar).
5. Captura **0 errores de consola**, **0 requests fallidos** y que el resumen se muestre.
```python
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page(viewport={"width":390,"height":844})
errs = []
page.on("pageerror", lambda e: errs.append(str(e)))
page.on("console", lambda m: errs.append(m.text) if m.type=="error" else None)
page.on("requestfailed", lambda r: errs.append(r.url))
await page.goto("http://127.0.0.1:8899/")
# ... click thru ...
print("ERRORS:", errs)
```
---
## 3. Layout check (sin lectura de imágenes)
Como el modelo no puede ver screenshots, verificamos el layout programáticamente:
- **Overflow horizontal**: `document.documentElement.scrollWidth > window.innerWidth` debe ser `false`.
- **Timeline colapsada en mobile**: el `.tl-body` debe tener la clase `closed` por default en viewport <768px.
- **Design tokens**: `getComputedStyle(document.documentElement)` debe devolver `--accent-ovr:#d9730a`, etc.
---
## 4. Verificación de mecánicas (tests dirigidos)
### Gating de competencias (1ª división)
Empezar en un equipo de **2ª división** y confirmar que NO aparecen eventos internacionales
hasta ascender a 1ª. Se rastrea el `dc-cat` de cada decisión contra el `G.div`.
### Cadencia de fichajes
Jugar y registrar en qué splits aparecen eventos "Fichaje". Debe ser **≥ split 4** y ~2 por carrera
(no en cada split).
### Diversidad de competencias
Jugar 10+ carreras y confirmar que aparecen las 5 (First Stand, MSI, EWC, Asian Games, Worlds).
### Stats / backend
Verificar que `G.stats` no tenga claves fantasma (`valor`) ni `NaN` al final de la carrera.
---
## 5. Export de imagen
Se fuerza el fin de carrera con datos de prueba, se clickea "Descargar imagen" y se valida el PNG con PIL:
```python
from PIL import Image
img = Image.open(path)
print(img.size, img.mode) # 1080x1920 RGBA
print(img.convert('RGB').getpixel((100,100))) # ~(10,10,12) dark bg
print(img.convert('L').getextrema()) # rango de luminancia (texto presente)
```
---
## 6. Test final contra producción (HTTPS)
Repetimos los smoke tests contra `https://lolero.cbcren.online` (no solo local), para validar
el deploy real (Caddy + TLS + serve de logos).
---
## Resultado esperado
- 0 errores de consola, 0 requests fallidos.
- Resumen alcanzado en 100% de las carreras.
- Sin overflow horizontal en desktop ni mobile.
- Export 1080×1920 PNG válido.
- Las 5 competencias aparecen; fichajes ≥ split 4; 2ª división no va a internacionales.
+1544
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 974 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

+94
View File
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="145.25626mm"
height="47.889584mm"
viewBox="0 0 145.25626 47.889584"
version="1.1"
id="svg8"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="fpx logo.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.1894531"
inkscape:cx="220.43124"
inkscape:cy="125.71459"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="70"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-8.472478,-134.20574)">
<g
id="g837"
transform="matrix(0.20235523,0,0,0.20136903,8.4722756,85.876162)">
<path
id="path817"
d="M 717.829,240.005 H 637.265 L 591.39,294.027 559.989,240.005 H 452.016 c 50.586,17.978 62.002,57.849 89.193,74.537 10.883,6.678 20.871,6.774 32.044,6.774 -28.08,-5.093 -36.265,-23.078 -36.265,-23.078 0,0 6.037,7.605 23.591,12.547 22.9,6.448 39.197,2.123 50.608,32.229 -9.035,-5.662 -19.95,-7.931 -29.095,-7.191 -35.093,2.838 -63.653,43.213 -104.475,75.97 -16.063,12.887 -33.045,20.448 -57.642,24.388 9.964,0.834 41.538,-1.141 62.667,-13.84 -29.022,32.349 -84.637,47.823 -130.992,55.446 l -0.255,0.038 h 164.479 l 60.663,-71.438 41.244,71.438 h 80.44 L 624.126,350.348 Z"
class="st0"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#fa0f00;fill-rule:evenodd" />
<path
id="path819"
d="m 249.432,348.596 h -94.226 c -19.139,0 -37.174,4.888 -53.032,14.044 -8.546,4.935 -16.361,11.118 -23.272,18.449 17.428,-10.152 39.135,-16.511 68.635,-15.971 -52.438,6.775 -78.691,28.884 -104.95,72.977 l -22.977,39.73 h 80.417 l 23.915,-41.56 c 3.333,-5.777 7.833,-10.299 13.137,-13.362 5.079,-2.933 11.236,-4.497 18.127,-4.497 h 53.924 z"
class="st0"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#fa0f00;fill-rule:evenodd" />
<path
id="path821"
d="m 78.231,331.823 c 23.107,-14.537 49.691,-21.988 76.975,-21.988 h 64.861 c -13.845,-5.388 -28.118,-12.715 -40.723,-21.499 21.328,12.736 52.662,20.825 78.325,21.499 h 14.142 l 40.281,-69.771 H 0.001 l 64.673,75.857 z"
class="st0"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#fa0f00;fill-rule:evenodd" />
<path
id="path823"
d="m 473.786,393.334 c 16.264,-16.264 26.358,-38.729 26.358,-63.466 0,-55.731 -52.628,-73.436 -98.318,-78.147 27.975,-1.832 53.838,4.884 71.603,14.253 -16.056,-16.723 -41.29,-25.93 -63.109,-25.93 h -76.444 l -40.595,70.313 h 18.335 47.457 51.247 c 5.329,0 10.2,2.205 13.754,5.758 3.552,3.553 5.758,8.424 5.758,13.753 0,5.33 -2.206,10.201 -5.758,13.753 -3.554,3.553 -8.425,5.759 -13.754,5.759 H 270.75 l -0.011,0.019 -24.203,41.92 -16.381,28.373 -33.562,58.132 h 81.146 l 33.562,-58.132 h 99.019 c 24.738,0 47.203,-10.095 63.466,-26.358"
class="st0"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#fa0f00;fill-rule:evenodd" />
</g>
</g>
<style
id="style815"
type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FA0F00;}
</style>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

+96
View File
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 659 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="600" height="360" version="1.1" viewBox="0 0 600 360" xmlns="http://www.w3.org/2000/svg">
<path d="m-0 0h544.29l55.713 101.87v125.85h-146.46l17.853 32.642h128.61v99.644h-239.06l-125.43-229.34h218.36l-18.355-33.559h-218.36l-36.437-66.621v229.87h65.098l54.497 99.644h-300v-99.644h60.269v-163.25h-60.269z" fill="#b4926a"/>
</svg>

After

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

+3
View File
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="262.51" height="300" version="1.1" viewBox="0 0 262.51 300" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><g stroke-width="1.3333"><path d="m130.46 66.434c-14.268 8.7404-106.85 50.937-111.47 95.555-4.2768 41.239 80.309 109.33 92.608 121.52 14.541-9.4068 92.311-60.66 96.586-101.9 4.5371-43.751-65.546-103.69-77.718-115.17" fill="#00253d"/><path d="m243.19 164.95c-5.628-20.733-48.681-176.74-133.2-158.42-2.3859 0.51739-4.6656 0.8623-6.7608 1.3777-0.14495 0.034666-0.29288 0.073465-0.4388 0.1092-0.26534 0.067465-0.53577 0.13266-0.79702 0.20103-4.7575 1.2093-9.8978 2.8747-15.381 5.1453-0.03773-4e-3 -0.08253-4e-3 -0.10506-0.0204 0.02253 0.012 0.04387 0.02547 0.06533 0.03666-15.544 6.4424-33.82 17.705-53.807 36.96 0 0 38.455-24.966 68.018-24.846 11.308 6.779 20.312 16.065 26.739 25.478-9.1058 4.1483-67.056 19.056-103.16 80.362-2.0084 3.4115-2.9217 6.1413-2.9206 8.2609 0.71028-1.2338 1.4562-2.3359 2.2307-3.3492 24.39-37.89 95.116-70.432 107.65-78.109 11.324 10.685 69.064 60.856 79.906 104.75 2.19 6.5913 3.1727 13.054 2.5329 19.224-0.0137 0.13053-0.0388 0.2633-0.0541 0.39493-0.0164 0.19492-0.0264 0.38473-0.0469 0.58269-4.8892 47.153-96.43 104.36-101.04 107.26l-1.7205 1.0817s153.48-48.409 132.28-126.48" fill="#00253d"/><path d="m69.651 130.67 48.665 23.083s-26.526 19.504-48.665-23.083" fill="#f5821f"/><path d="m185.78 144.5-40.307 12.659s17.769 18.609 40.307-12.659" fill="#f5821f"/><path d="m155.24 203.92c8.5762-4.3799 19.278-13.634 19.278-13.634 5.7617-10.41 9.9518-19.496 9.9518-19.496-14.794 11.755-27.114 16.814-37.096 15.852-2.0358 3.2543-24.415 46.046-24.415 46.046s11.172-38.262 14.613-49.352c-31.573 11.645-73.446-13.166-90.2-33.428-0.26125 9.9855 3.6696 26.838 7.673 39.471 4.8627 6.8404 13.633 16.242 31.445 28.435 0 0-6.6005 0.11639-14.272-0.548 17.632 16.629 44.192 31.674 44.192 31.674s34.884-20.906 50.223-45.424c-6.0637-0.0244-11.393 0.40411-11.393 0.40411" fill="#00b1ff"/></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

+220
View File
@@ -0,0 +1,220 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 24.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 278 360.00002"
xml:space="preserve"
sodipodi:docname="Team_Liquid_logo.svg"
width="278"
height="360"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"><metadata
id="metadata1153"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs1151" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview1149"
showgrid="false"
inkscape:zoom="1.68"
inkscape:cx="322.46599"
inkscape:cy="216.20184"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<style
type="text/css"
id="style1085">
.st0{fill:#0A1723;stroke:#031422;stroke-miterlimit:10;}
.st1{fill:url(#SVGID_1_);}
.st2{fill:#FFFFFF;}
.st3{fill:#031422;}
</style>
<g
id="g1099"
transform="matrix(0.15757846,0,0,0.15757846,2,1.73306)">
<g
id="base_4_">
<path
class="st0"
d="m 867.71,1694.33 c -3.01,-1.12 -303.29,-113.8 -470.19,-228.84 -255.66,-176.12 -267,-418.79 -267,-907.38 V 264.75 L 870.89,9.57 1611.18,264.74 V 558.1 c 0,488.59 -11.34,731.26 -267,907.38 -166.9,115.04 -467.12,227.72 -470.12,228.84 l -3.17,1.18 z"
id="path1087"
inkscape:connector-curvature="0"
style="fill:#0a1723;stroke:#031422;stroke-miterlimit:10" />
<linearGradient
id="SVGID_1_"
gradientUnits="userSpaceOnUse"
x1="204.80969"
y1="226.01109"
x2="1530.1445"
y2="1285.5702">
<stop
offset="0"
style="stop-color:#AD9742"
id="stop1089" />
<stop
offset="0.486"
style="stop-color:#C4BA40"
id="stop1091" />
<stop
offset="1"
style="stop-color:#AD9742"
id="stop1093" />
</linearGradient>
<path
class="st1"
d="m 870.89,19.16 731.25,252.05 v 286.91 c 0,483.39 -9.95,725.55 -263.09,899.92 -167.91,115.75 -468.16,227.81 -468.16,227.81 0,0 -300.3,-112.07 -468.22,-227.82 C 149.53,1283.66 139.58,1041.5 139.58,558.11 V 271.21 L 870.89,19.16 m 0,-19.16 -5.9,2.03 -731.3,252.05 -12.21,4.21 v 12.92 286.91 c 0,491.81 11.51,736.15 270.93,914.83 167.82,115.69 459.81,225.26 472.16,229.87 l 6.33,2.36 6.33,-2.36 c 12.35,-4.61 304.28,-114.18 472.11,-229.87 259.41,-178.69 270.92,-423.02 270.92,-914.83 V 271.21 258.29 L 1608.05,254.08 876.79,2.03 Z"
id="path1096"
style="fill:url(#SVGID_1_)"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="new_1_"
transform="matrix(0.15757846,0,0,0.15757846,2,1.73306)">
<g
id="g1119">
<path
class="st2"
d="m 418.46,1017.58 c -45.88,22.63 -106.83,49.37 -174.35,73.07 11.92,51.37 28.28,97.24 50.68,138.82 50.49,-32.1 95.15,-64.51 129.65,-91.67 -4.8,-42.02 -6.71,-82.09 -5.98,-120.22 z"
id="path1101"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="st2"
d="m 531.71,641.49 -0.03,0.03 C 446.28,607.43 318.56,546.35 212.08,465.96 v 117.85 c 0,22.02 0.04,43.37 0.11,64.31 99.6,37.61 201.62,61.15 273.78,73.58 13.77,-28.73 29.18,-55.41 45.74,-80.21 z"
id="path1103"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="st2"
d="M 651.91,505.87 C 592.9,445.25 510.43,349.16 447.31,243.28 l -162.86,56.3 c 90.08,114.39 218.22,213.67 302.64,270.11 20.95,-23.63 42.76,-44.84 64.82,-63.82 z"
id="path1105"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="st2"
d="m 726.54,450.07 -0.01,0.01 c 30.13,-19.4 59.24,-34.61 85.56,-45.97 C 787.68,337.92 758.44,242.58 740.91,141.77 L 595.9,191.92 c 38.93,101.27 90.86,195.07 130.64,258.15 z"
id="path1107"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="st2"
d="m 451.09,810.65 -0.04,0.1 c -62.38,2.44 -147.74,1.43 -236.78,-8.87 1.49,52.08 3.97,100.21 8.02,144.93 78.71,-9.03 151.54,-23.9 205.75,-37.68 v 0.03 c 5.54,-34.74 13.38,-67.54 23.05,-98.51 z"
id="path1109"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="st2"
d="m 448.53,1271.54 c -18.14,21.78 -40.03,46.66 -64.72,72.83 19.51,18.28 41.09,35.73 65.27,52.43 14.75,10.22 30.68,20.38 47.33,30.42 -20.17,-54.33 -35.88,-106.12 -47.88,-155.68 z"
id="path1111"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
class="st2"
d="m 1144.1,673.28 c 14.59,11.92 52.47,0.83 52.47,0.83 l -27.43,-32.61 -58.71,-39.17 c 0,0 19.05,59.01 33.67,70.95 z"
id="path1113"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<polygon
class="st2"
points="1377.97,1016.14 1335.77,999.79 1300.49,971.36 1320.81,1020.5 "
id="polygon1115"
style="fill:#ffffff" />
<path
class="st2"
d="m 911.9,111.05 c -24.28,77.71 -31.92,173.26 -4.55,267.16 l -0.63,0.17 c 0.2,0 0.43,-0.03 0.65,-0.03 9.78,-10.16 84.82,-88.53 152.13,-162.44 0,0 88.76,101.84 -35.34,206.67 0,0 221.24,154.64 235.55,161.24 0,0 -11.48,48.09 -0.45,89.16 l 174,337.33 -87.85,103.53 -128.77,-72.57 62.08,99.57 c 0,0 -70.16,8.71 -91.55,-1.92 -12.09,-63.12 -67.95,-165.3 -67.95,-165.3 L 988.18,920.56 c 0,0 -57.13,-70.19 -53.14,-172.52 0,0 -65.28,268.16 110.97,335.05 l 246.65,313.71 c 228.04,-157.51 237,-376.3 237,-812.99 V 324.6 Z"
id="path1117"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g>
</g>
<g
id="g1146"
transform="matrix(0.15757846,0,0,0.15757846,2,1.73306)">
<g
id="g1134">
<path
class="st3"
d="m 882.59,1772.03 h 55.94 v 359.43 h 63.78 v 53.91 H 882.59 Z"
id="path1122"
inkscape:connector-curvature="0"
style="fill:#031422" />
<path
class="st3"
d="m 1042.15,1772.03 h 55.94 v 413.34 h -55.94 z"
id="path1124"
inkscape:connector-curvature="0"
style="fill:#031422" />
<path
class="st3"
d="m 1323.56,2100.98 v -328.95 h 55.94 v 328.86 c 0,22.16 3.66,30.55 16.21,30.55 12.03,0 15.68,-8.39 15.68,-30.55 v -328.86 h 54.89 v 328.95 c 0,52.72 -27.71,84.47 -71.62,84.47 -43.39,-0.01 -71.1,-31.76 -71.1,-84.47 z"
id="path1126"
inkscape:connector-curvature="0"
style="fill:#031422" />
<path
class="st3"
d="m 1506.2,1772.03 h 55.94 v 413.34 h -55.94 z"
id="path1128"
inkscape:connector-curvature="0"
style="fill:#031422" />
<path
class="st3"
d="m 1601.88,1772.03 h 72.67 c 48.62,0 73.19,28.75 73.19,85.66 v 242.01 c 0,56.91 -24.57,85.66 -73.19,85.66 h -72.67 z m 67.43,359.42 c 17.78,0 22.48,-7.19 22.48,-35.94 v -233.63 c 0,-28.75 -4.7,-35.94 -22.48,-35.94 h -11.5 v 305.51 z"
id="path1130"
inkscape:connector-curvature="0"
style="fill:#031422" />
<path
class="st3"
d="m 1261.07,2206.08 c -9.93,0 -14.64,-5.39 -14.64,-16.77 v -12.7 c 4.58,-2.55 8.79,-5.63 12.59,-9.23 9.6,-9 16.51,-21.2 20.51,-36.12 0.07,-0.27 0.15,-0.55 0.22,-0.82 0.02,-0.07 0.03,-0.13 0.05,-0.2 2.46,-9.52 3.75,-20.15 3.75,-31.79 v -0.42 -238.79 -0.42 c 0,-54.51 -27.19,-86.86 -72.67,-86.86 -19.79,0 -36.34,6.27 -48.66,17.93 -9.6,9 -16.51,21.2 -20.51,36.12 -0.07,0.27 -0.15,0.54 -0.22,0.82 -0.02,0.07 -0.03,0.13 -0.05,0.2 -2.46,9.52 -3.75,20.15 -3.75,31.79 v 0.42 238.79 0.42 c 0,47.22 20.4,77.81 55.41,85.15 v 11.45 c 0,44.93 18.82,65.9 58.55,65.9 h 31.89 v -54.86 h -22.47 z m -67.44,-348.38 c 0,-22.76 4.18,-31.75 17.25,-31.75 12.55,0 16.73,8.99 16.73,31.75 v 242.04 c 0,22.76 -4.18,31.75 -17.25,31.75 -12.55,0 -16.73,-8.99 -16.73,-31.75 z"
id="path1132"
inkscape:connector-curvature="0"
style="fill:#031422" />
</g>
<g
id="g1144">
<polygon
class="st3"
points="99.85,2185.37 99.85,1825.94 143.77,1825.94 143.77,1772.03 0,1772.03 0,1825.94 43.91,1825.94 43.91,2185.37 "
id="polygon1136"
style="fill:#031422" />
<polygon
class="st3"
points="239.32,2131.45 239.32,2005.79 295.22,2005.79 295.22,1951.88 239.32,1951.88 239.32,1825.94 308.33,1825.94 308.33,1772.03 183.38,1772.03 183.38,2185.37 308.33,2185.37 308.33,2131.45 "
id="polygon1138"
style="fill:#031422" />
<path
class="st3"
d="m 387.63,1772.03 -39.21,413.34 h 53.85 l 6.27,-87.46 h 32.41 l 6.8,87.46 h 56.46 L 465,1772.03 Z m 23.53,271.41 9.13,-137.62 c 0.07,-5.97 1.2,-8.32 4.63,-8.28 3.29,0.04 4.36,2.41 4.29,8.39 l 9.13,137.51 z"
id="path1140"
inkscape:connector-curvature="0"
style="fill:#031422" />
<path
class="st3"
d="m 674.22,1772.03 c 0,0 -19.11,184.31 -19.11,184.66 l -0.39,3.73 c -0.56,2.45 -1.77,3.51 -3.96,3.52 -2.22,0.01 -3.46,-0.98 -4.07,-3.28 l -0.49,-4.71 c 0,-0.11 -19.03,-183.92 -19.03,-183.92 h -83.12 v 413.34 h 48.1 l 0.06,-279.79 c -0.16,-5.55 0.72,-8 3.6,-8.4 h 1.66 c 1.71,0.26 2.7,1.43 3.21,3.78 l 28.59,284.41 h 41.3 l 28.68,-285.33 c 0.56,-1.74 1.5,-2.64 2.97,-2.86 h 1.66 c 2.88,0.4 3.76,2.85 3.6,8.4 l 0.21,279.79 h 55.41 v -413.34 z"
id="path1142"
inkscape:connector-curvature="0"
style="fill:#031422" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 858 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B