Creature template
La tabla `creature_template`
Esta tabla contiene la información básica de las criaturas. Si no hay datos aquí, la criatura no existe.
Estructura
Field | Type | Attributes | Key | Null | Default | Extra | Comment | |
---|---|---|---|---|---|---|---|---|
Entry | mediumint(8) | unsigned | PRI | NO | 700000 | |||
Difficulty_entry_1 | mediumint(8) | unsigned | NO | 0 | ||||
Difficulty_entry_2 | mediumint(8) | unsigned | NO | 0 | ||||
Difficulty_entry_3 | mediumint(8) | unsigned | NO | 0 | ||||
KillCredit1 | int(11) | unsigned | NO | 0 | ||||
KillCredit2 | int(11) | unsigned | NO | 0 | ||||
modelid1 | mediumint(8) | unsigned | NO | 3167 | ||||
modelid2 | mediumint(8) | unsigned | NO | 5446 | ||||
modelid3 | mediumint(8) | unsigned | PRI | NO | 0 | |||
modelid4 | mediumint(8) | unsigned | PRI | NO | 0 | |||
name | char(100) | signed | NO | Timeless | ||||
subname | char(100) | signed | YES | NULL | ||||
Iconname | char(100) | signed | NO | Timeless | ||||
goship_menu_id | mediumint(8) | signed | YES | 0 | ||||
minlevel | tinyint(3) | unsigned | NO | 100 | ||||
maxlevel | tinyint(3) | unsigned | NO | 1 | ||||
exp | smallint(2) | signed | NO | 0 | ||||
faction_A | smallint(5) | signed | NO | 35 | ||||
faction_H | smallint(5) | signed | NO | 0 | ||||
npcflag | int(10) | signed | NO | 1 | ||||
speed_walk | float | signed | NO | 1 | Result of 2.5/2.5, most common value | |||
speed_run | float | signed | NO | 1.14286 | Result of 8.0/7.0, most common value | |||
scale | float | signed | NO | 1.5 | ||||
rank | tinyint(3) | unsigned | NO | 1 | ||||
mindmg | float | signed | NO | 0 | ||||
maxdmg | float | signed | NO | 0 | ||||
dmgschool | tinyint(4) | signed | NO | 0 | ||||
attackpower | int(10) | unsigned | NO | 0 | ||||
dmg_multiplier | float | signed | NO | 1 | ||||
baseattacktime | int(10) | unsigned | NO | 2000 | ||||
rangeattacktime | int(10) | unsigned | NO | 1000 | ||||
unit_class | tinyint(3) | unsigned | NO | 1 | ||||
unit_flag | int(10) | unsigned | NO | 0 | ||||
unit_flag2 | int(10) | unsigned | NO | 0 | ||||
dynamicflags | int(10) | unsigned | NO | 0 | ||||
family | tinyint(4) | signed | NO | 0 | ||||
trainer_type | tinyint(4) | signed | NO | 0 | ||||
trainer_spell | mediumint(8) | unsigned | NO | 0 | ||||
trainer_class | tinyint(3) | unsigned | NO | 0 | ||||
trainer_race | tinyint(3) | unsigned | NO | 0 | ||||
minrangedmg | float | signed | NO | 0 | ||||
maxrangedmg | float | signed | NO | 0 | ||||
rangedattackpower | smallint(5) | unsigned | NO | 0 | ||||
type | tinyint(3) | unsigned | NO | 7 | ||||
type | tinyint(3) | unsigned | NO | 7 | ||||
type_flag | int(10) | unsigned | NO | 0 | ||||
lootid | mediumint(8) | unsigned | NO | 0 | ||||
pickpocketloot | mediumint(8) | unsigned | NO | 0 | ||||
skinloot | mediumint(8) | unsigned | NO | 0 | ||||
resistance1 | smallint(5) | signed | NO | 200 | ||||
resistance2 | smallint(5) | signed | NO | 200 | ||||
resistance3 | smallint(5) | signed | NO | 200 | ||||
resistance4 | smallint(5) | signed | NO | 200 | ||||
resistance5 | smallint(5) | signed | NO | 200 | ||||
resistance6 | smallint(5) | signed | NO | 200 | ||||
spell1 | mediumint(8) | unsigned | NO | 0 | ||||
spell2 | mediumint(8) | unsigned | NO | 0 | ||||
spell3 | mediumint(8) | unsigned | NO | 0 | ||||
spell4 | mediumint(8) | unsigned | NO | 0 | ||||
spell5 | mediumint(8) | unsigned | NO | 0 | ||||
spell6 | mediumint(8) | unsigned | NO | 0 | ||||
spell7 | mediumint(8) | unsigned | NO | 0 | ||||
spell8 | mediumint(8) | unsigned | NO | 0 | ||||
PetSpellDataId | mediumint(8) | unsigned | NO | 0 | ||||
VehicleId | mediumint(8) | unsigned | NO | 0 | ||||
mingold | mediumint(8) | unsigned | NO | 100000 | ||||
maxgold | mediumint(8) | unsigned | NO | 100000 | ||||
AIName | char(64) | signed | NO | * | ||||
MovementType | tinyint(3) | unsigned | NO | 0 | ||||
InhabitType | tinyint(3) | unsigned | NO | 3 | ||||
HoverHeight | float | signed | NO | 0 | ||||
Health_mod | float | signed | NO | 100000 | ||||
Mana_mod | float | signed | NO | 100000 | ||||
Armor_mod | float | signed | NO | 100000 | ||||
RacialLeader | tinyint(3) | unsigned | NO | 0 | ||||
Questitem1 | int(11) | unsigned | NO | 0 | ||||
Questitem2 | int(11) | unsigned | NO | 0 | ||||
Questitem3 | int(11) | unsigned | NO | 0 | ||||
Questitem4 | int(11) | unsigned | NO | 0 | ||||
Questitem5 | int(11) | unsigned | NO | 0 | ||||
Questitem6 | int(11) | unsigned | NO | 0 | ||||
movementID | int(11) | unsigned | NO | 0 | ||||
RegenHealth | tinyint(3) | unsigned | NO | 1 | ||||
mechanic_immune_mask | int(10) | unsigned | NO | 0 | ||||
flags_extra | int(10) | unsigned | NO | 0 | ||||
ScriptName | char(64) | signed | NO | * | ||||
WDBVerified | smallint(5) | signed | YES | 1 |
Descripción de los campos
entry
La ID única de la criatura.
difficulty_entry_1-3
Este campo enlaza los datos de esta criatura a otro entry para crear copias en modos de dificultad distintos. Cada uno de estos tres campos se rellena dependiendo de en que tipo de estancia está la criatura y en que modos aparecerá una copia suya (definida mediante el otro entry).
Tipo estancia | difficulty entry 1 | difficulty entry 2 | difficulty entry 3 |
---|---|---|---|
Estancia normal (5j.) | Modo heroico (5j.) | ||
Raid normal (10j.) | Modo normal (25j.) | Modo heroico (10j.) | Modo heroico (25j.) |
KillCredit1
Cuando el npc se usa como plantilla para enlazar varias criaturas distintas que se pueden matar para cumplir el objetivo de una misión (el entry de este npc es el que aparece en los requisitos de la misión en quest_template). Aquí se pone el entry de la criatura que se puede matar.
KillCredit2
Campo igual que el de arriba. Aquí se pone el segundo entry de la criatura que se puede matar. Si se pueden matar más de dos criaturas, hay que programarlo por Smart AI o scripts C++.
modelid1-4
Un modelo visual aleatorio que elige el cliente. Es el valor de modelid de creature_model_info.
name
El nombre de la criatura.
subname
El subnombre de la criatura que aparece entre <> bajo su nombre.
IconName
Nombre del icono que usa el npc y que dice a un player que tipo de npc es. Requiere que se escriba con las mayúsculas y las minúsculas (case sensitive). Tipos conocidos:
- Directions - Usado por guardias y npcs que teletransporten.
- Gunner - Indicador de un npc torreta controlado por jugadores.
- vehichleCursor - Indicador de que es un vehículo controlado por jugadores.
- Driver - Muestra un icono de volante cuando se pasa el ratón por encima del npc.
- Attack - Muestra un icono de espada que indica que puedes atacarlo.
- Buy - Muestra un icono de una bolsa marrón por lo general si el npc sólo vende cosas.
- Speak - Muestra un icono de chat si el npc tiene opciones de quest o gossips.
- Pickup - Muestra el icono de una mano que indica que el npc puede ser recogido/investigado para quests o items (no confundir con icono de loot).
- Interact - Muestra el icono de la rueda dentada generalmente usado para transportes y quests.
- Trainer - Muestra un icono de libro, identificando al npc como instructor.
- Taxi - Muestra el icono de unas botas con alas que identifican al npc como maestro de vuelo.
- Repair - Muestra el icono de un yunque identificando al npc como reparador.
- LootAll - Muestra el icono de múltiples bolsas marrones (el mismo que mantener shift antes de lootear a una criatura).
- Quest - Desconocido (ver npc 32870).
- PVP - Desconocido (ver npc 29387).
Nota: Esto no es requerido para que el npc haga su función a menos que use scripts u opciones de gossip.
=== gossip_menu_id La ID del gossip de la criatura. Este campo se obtiene del servidor oficial. Este campo enlaza con entry de gossip_menu.
minlevel
El nivel mínimo que tiene la criatura.
maxlevel
El nivel máximo que tiene la criatura. Cuando se añade al mundo, elegirá un nivel aleatorio dentro del rango.
exp
La expansión a la que pertenece la criatura, usado para calcular su salud. Los valores pueden ser 0, 1 ó 2.
faction_A
La facción que tiene la criatura con la Alianza tomada de FactionTemplate.dbc.
Nota: Este campo también controla el comportamiento de la mecánica de asistencia de grupo de criaturas. Sólo las criaturas con la misma facción se ayudarán mutuamente.
faction_H
La facción que tiene la criatura con la Horda tomada de FactionTemplate.dbc.
Nota: Este campo también controla el comportamiento de la mecánica de asistencia de grupo de criaturas. Sólo las criaturas con la misma facción se ayudarán mutuamente.
npcflag
Una máscara de bits que representa las flags que tiene la criatura. Cada bit controla una flag diferente. Para combinar flags, basta con sumar los valores.
Flag | Nombre | Comentario | |
---|---|---|---|
1 | 0x0000 0001 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
2 | 0x0000 0002 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
16 | 0x0000 0010 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
32 | 0x0000 0020 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
64 | 0x0000 0040 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
128 | 0x0000 0080 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
256 | 0x0000 0100 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
512 | 0x0000 0200 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
1024 | 0x0000 0400 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
2048 | 0x0000 0800 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
4096 | 0x0000 1000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
8192 | 0x0000 2000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
16384 | 0x0000 4000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
32768 | 0x0000 8000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
65536 | 0x0001 0000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
131072 | 0x0002 0000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
262144 | 0x0004 0000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
65536 | 0x0008 0000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
524288 | 0x0010 0000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
1048576 | 0x0020 0000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
2097152 | 0x0040 0000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
4194304 | 0x0080 0000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
4194304 | 0x0100 0000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
8388608 | 0x0000 0001 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
16777216 | 0x0000 0001 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
67108864 | 0x0400 0000 | Gossip | Si la criatura tiene un menú de gossip (texto al hacerle click), este flag le da menú. |
Entonces si quieres que un npc dé misiones, sea vendedor y pueda reparar, tienes que sumar las flags: 1 + 2 + 128 + 4096 = 4227. Lo mismo con los números hexadecimales: 0x1 + 0x2 + 0x80 + 0x1000 = 0x1083
speed_walk
Controla la velocidad a la que camina la criatura. En los vehículos incrementa la velocidad de vuelo.
speed_run
Controla la velocidad a la que corre la criatura. En los vehículos incrementa la velocidad en tierra.
scale
Si es distinto de cero, multiplica el tamaño del modelo que usa la criatura. Si es cero, usa el tamaña por defecto.
rank
El rango de la criatura:
Rango | Nombre | Tiempo de respawn por defecto
(spawntimesecs de creature) |
Tiempo de desaparición de cadáver
(Worldserver.conf - Corpse.Decay) |
Tiempo de respawn total |
---|---|---|---|---|
0 | Normal | 5 min. | 60 seg. | 6 min. |
1 | Élite | 5 min. | 5 min. | 10 min. |
2 | Élite/Raro | 5 min. | 5 min. | 10 min. |
3 | Boss | 5 min. | 1 hora. | 1 hora, 5 min. |
4 | Raro | 5 min. | 5 min. | 10 min. |
Notas:
- El rango de una criatura es meramente visual (requiere borrar Caché para ver los cambios). Cambiar este valor no modifica ni la salud, ni el daño ni el loot. Sin embargo si cambiará el tiempo de respawn de la criatura.
- Los tiempos de respawn se modifican en dos lugares:
- El spawntimesecs de creature (sólo para un único guid).
- En el archivo worldserver.conf en los ajustes de "Corpse.Decay" (para todas las criaturas del mismo rango).
Importante recordar que el `spawntimesecs` por defecto para todas las criaturas es de 5 minutos y que para que el npc pueda respawnear antes debe desaparecer su cuerpo. Por ejemplo, usando ".npc add" para spawnear un npc "Normal" estableceremos un tiempo de respawn de 6 minutos (spawntimesecs + tiempo de Corpse.Decay). Si modificamos el spawntimesecs y lo ponemos en 0, el tiempo establecido en Corpse.Decay se convertirá en el mínimo tiempo de respawn (1 minuto).
- Si quieres que el npc muestre una calavera o "??" en el retrato (generalmente bosses), establecer type_flags en 4.
mindmg
Daño mínimo que hace la criatura cuerpo a cuerpo. Este campo ya no se combina con attackpower para calcular el daño.
maxdmg
Daño máximo que hace la criatura cuerpo a cuerpo. Este campo ya no se combina con attackpower para calcular el daño.
dmgschool
El tipo de daño que hace cuerpo a cuerpo.
ID | NOMBRE |
---|---|
0 | SPELL_SCHOOL_NORMAL |
1 | SPELL_SCHOOL_HOLY |
2 | SPELL_SCHOOL_FIRE |
3 | SPELL_SCHOOL_NATURE |
4 | SPELL_SCHOOL_FROST |
5 | SPELL_SCHOOL_SHADOW |
6 | SPELL_SCHOOL_ARCANE |
attackpower
El poder de ataque de los golpes cuerpo a cuerpo de la criatura. Junto con mindmg y maxdmg dicta cuanto llegará la criatura a golpear. La fórmula para aplicar daños correctos es:
UPDATE `creature_template` SET
`mindmg` = <#1>,
`maxdmg` = <#2>,
`attackpower` = ROUND((`mindmg` + `maxdmg`) / 4 * 7),
`mindmg` = ROUND(`mindmg` - `attackpower` / 7),
`maxdmg` = ROUND(`maxdmg` - `attackpower` / 7)
WHERE `entry` = ...
Sustituye '<#1> por el daño mínimo que desees y '<#2>' por el máximo. Nota: Una vez ejecutado el query es necesario comprobar los valores calculados ya que si la diferencia entre mindmg y maxdmg es demasiado grande, mindmg terminará siendo un valor negativo.
dmg_multiplier
Multiplicador para mindmg y maxdmg.
Ejemplo: mindmg=200 maxdmg = 500 dmg_multiplier = 10.
Resultado: el npc pegará golpes de 2000-5000.
baseattacktime
El tiempo que tarda en dar golpes cuerpo a cuerpo. En milisegundos.
rangeattacktime
El tiempo que tarda en dar golpes a distancia. En milisegundos.
unit_class
La clase de la criatura, para determinar si tiene ira, maná, nada, etc.
Nombre de clase | Valor |
---|---|
CLASS_WARRIOR | 1 |
CLASS_PALADÍN | 2 |
CLASS_ROUGE | 4 |
CLASS_MAGE | 8 |
unit_flags
Permite la aplicación manual de flags de unidad. Una vez más es una máscara de bits y puede combinarse sumando valores.