Fórmula del algoritmo de cría de Palworld (deducida inversamente, no garantizada)
Declaración: El algoritmo mencionado en este artículo se deriva mediante la descompresión de datos + datos de apareamiento probados en la práctica, y no se garantiza que sea 100% correcto. Si hay algún error, por favor discúlpenos. Todo está sujeto a la situación real dentro del juego.
Renderizando...
> Declaración: El algoritmo descrito en este artículo se ha deducido mediante la descompilación de datos + datos de cría probados en la práctica. No se garantiza que sea 100% correcto. Si hay algún error, por favor discúlpenos. Todo estará sujeto a la situación real del juego.
>
> Herramienta de calculadora de cría en línea: https://www.maingamers.com/games/palworld/tools/breeding
---
## 1. Resumen del Algoritmo
La cría consta de cuatro niveles de decisión:
```
Entrada: Padres A, Padre B
│
├─① Tabla de casos especiales DT_PalCombiUnique → Devuelve descendencia fija
│
├─② Autocría del mismo tipo (A.id === B.id) y A puede ser descendencia → Devuelve a sí mismo
│
└─③ Fórmula convencional
├─ target = floor((CombiRank_A + CombiRank_B + 1) / 2)
├─ Construir el grupo de candidatos a descendencia pool según las reglas
└─ Seleccionar el que tenga el mínimo |CombiRank - target| en pool; en caso de empate, decidir según las reglas de desempate
```
---
## 2. Origen y Campos de Datos
### 2.1 Tablas de Datos
| Tabla | Ruta de Descompilación | Uso |
|----|----------|------|
| `DT_PalMonsterParameter` | `Pal/DataTable/Character/DT_PalMonsterParameter.json` | Parámetros de Pal |
| `DT_PalCombiUnique` | `Pal/DataTable/Character/DT_PalCombiUnique.json` | Cría de casos especiales |
### 2.2 Campos Participantes en el Cálculo
| Campo | Función |
|------|------|
| `CombiRank` | Cálculo de target; distancia de selección de descendencia; comparación de empates |
| `IgnoreCombi` | Padres disponibles, descendencia no disponible; afecta al grupo de descendencia y al desempate |
| `Tribe` | Coincidencia de padres en la tabla de casos especiales |
| `Gender` | Condición opcional en la tabla de casos especiales |
| `ZukanIndex` | Admisión de padres/descendencia (debe ser ≥ 0) |
| `ZukanIndexSuffix` | Identificación de variante B; grupo de descendencia y desempate |
| `IsBoss` / `IsTowerBoss` / `IsRaidBoss` | Exclusión del grupo de descendencia |
| `ChildCharacterID` | Salida de descendencia especial |
### 2.3 Terminología
- **Padre IgnoreCombi**: Los Pals con `IgnoreCombi === true` pueden ser padres, pero no descendencia por fórmula.
- **Variante B**: `ZukanIndexSuffix` no está vacío (generalmente `B`), y el CombiRank puede ser diferente al de la fila estándar.
- **Combinación legendaria unilateral**: `IgnoreCombi` en solo uno de los padres (`oneLegend`).
- **dominantNonLegend**: El padre no IgnoreCombi con el CombiRank más alto.
---
## 3. Construcción de Índices
Para cada fila en `DT_PalMonsterParameter` donde `IsPal=true`:
1. **Fila Canónica**: Cuando hay varias filas con el mismo `BPClass`, se toma la fila estándar (`sourceKey === BPClass`); se excluyen las filas internas como `BOSS_`/`RAID_`/`GYM_`/`QUEST_` y `*_Oilrig`, `*_Tower`.
2. **Grupo de Padres** `breedable`: `CombiRank` válido (< 9000), con número de enciclopedia, no es Raid/Tower Boss, no es una variante interna; `IgnoreCombi=true` también puede ser padre.
3. **Grupo de Descendencia** `childCandidates`: Cumple las condiciones de padre, y `IgnoreCombi=false`, no es `IsBoss`.
---
## 4. Cría de Casos Especiales
Consulta `DT_PalCombiUnique`: Coincide con la `Tribe` de ambos padres (el orden no importa), si se cumple la condición de `Gender`, se devuelve `ChildCharacterID`, y no se aplica la fórmula.
---
## 5. Autocría del Mismo Tipo
Si `parentA.id === parentB.id` y este Pal está en el grupo de descendencia → la descendencia es él mismo.
---
## 6. Fórmula Convencional
### 6.1 target
```
target = floor((CombiRank_PadreA + CombiRank_PadreB + 1) / 2)
```
### 6.2 Grupo de Candidatos a Descendencia
Sea `nonB` = descendencia candidata sin sufijo B, `maxParentRank` = max(CombiRank de los padres). Ejecutar en orden, termina al coincidir:
**Regla A — Padres con sufijo B**
```
Si ZukanIndexSuffix de PadreA o PadreB === "B"
→ pool = nonB
```
**Regla B — Ambos IgnoreCombi**
```
Si padreA.ignored && padreB.ignored
→ pool = candidatos en nonB excluyendo CombiRank === target
```
**Regla C — IgnoreCombi unilateral + alta fertilidad no legendaria**
```
Si oneLegend && dominantNonLegend.rank >= 1700
probe = descendencia candidata \ { B y CombiRank === target }
Si la distancia del B más cercano en probe a target |rank - target| >= 20
→ pool = nonB
```
**Regla D — Grupo base y B único más cercano**
```
pool = descendencia candidata \ { B y CombiRank === target }
poolNonB = B en pool
poolB = B en pool
bestBDist = distancia mínima de poolB a target
bestNDist = distancia mínima de poolNonB a target
uniqueClosestB = solo 1 B en poolB que está más cerca de target y cuya distancia === bestBDist
Si bestBDist < bestNDist y uniqueClosestB:
Si oneLegend:
Si dominantNonLegend.rank >= 1000
→ Eliminar esta única fila B más cercana de pool, conservar pool
De lo contrario
→ pool = poolNonB
De lo contrario
→ pool = poolNonB
```
**Regla E — Todos los B en el nivel más cercano (ambos padres no IgnoreCombi)**
```
tierDist = distancia mínima de pool a target
tier = candidatos en pool donde |rank - target| === tierDist
Si no oneLegend
y todos en tier son variantes B
y bestNDist - tierDist >= 10
y maxParentRank > 2000
→ pool = poolNonB
```
**Regla F — Por defecto**
```
Devolver el pool actual
```
### 6.3 Selección de Descendencia
Seleccionar el que tenga el mínimo `|CombiRank - target|` en `pool`; si hay varios con la misma distancia, entrar en las reglas de desempate.
---
## 7. Reglas de Desempate
Sea `best` y `candidate` a la misma distancia de target.
### 7.1 Mismo tipo (ambos B o ambos no B)
```
Si ambos son variantes B y oneLegend y 650 <= maxParentRank < 1200:
Si un padre tiene rank < target y el otro tiene rank >= target
→ Tomar el de rank < target
De lo contrario
→ Tomar el de CombiRank mayor
De lo contrario:
→ Tomar el de CombiRank mayor
```
### 7.2 Mixto (un B, uno no B)
Evaluar en orden, devolver al coincidir:
| Condición | Resultado |
|------|------|
| `oneLegend` y `dominantNonLegend.rank > 1000` | Prioridad al lado con `CombiRank >= target`; en el mismo lado, tomar el CombiRank mayor |
| `maxParentRank >= 1500` | Prioridad a no B |
| `650 <= maxParentRank < 1100` | Tomar el CombiRank mayor |
| Resto | Prioridad a no B |Comentario
Inicia sesión para ver y publicar comentarios
Ir a iniciar sesión