Tabla `spell_area`
Esta tabla se usa para aplicar un aura de hechizo específica al jugador dentro de un área del juego. Cuando cualquier jugador entra en esta área o interactúa de algún modo con una misión, esta aura se manejará en consecuencia.
Estructura
| Field | Type | Attributes | Key | Null | Default | Extra | Comment |
|---|---|---|---|---|---|---|---|
| spell | MEDIUMINT | UNSIGNED | PRI | NO | |||
| area | MEDIUMINT | UNSIGNED | PRI | NO | |||
| quest_start | MEDIUMINT | UNSIGNED | PRI | NO | |||
| quest_end | MEDIUMINT | UNSIGNED | NO | ||||
| aura_spell | MEDIUMINT | SIGNED | PRI | NO | |||
| racemask | MEDIUMINT | UNSIGNED | PRI | NO | |||
| gender | TINYINT | UNSIGNED | PRI | NO | |||
| flags | TINYINT | UNSIGNED | NO | ||||
| quest_start_status | INT | UNSIGNED | NO | ||||
| quest_end_status | INT | UNSIGNED | NO |
Descripción de los campos
El ID del hechizo a lanzar sobre el jugador. Ver Spell.dbc.
El ID del área. Escribe ".gps" en el juego y busca el número "Area:" a usar en esta celda. Ver también AreaTable.dbc.
El entry de la misión que el jugador debe tener en el estado definido por quest_start_status. Ver quest_template.id.
El entry de la misión que el jugador NO debe tener en el estado definido por quest_end_status. Ver quest_template.id. Poner tanto quest_start como quest_end al mismo valor es inútil.
Si se establece, este valor (más o menos el ID de aura de hechizo de Spell.dbc) impone una condición adicional.
El valor tiene el siguiente efecto:
Este ID se llama automáticamente desde ChrRaces.dbc. El bitmask se introduce aquí.
El tipo de género al que se aplica esta entrada. 0 = Masculino, 1 = Femenino, 2 = Cualquiera.
| Flag | Value | Name | Comment |
|---|---|---|---|
| 1 | 0x01 | SPELL_AREA_FLAG_AUTOCAST | Si el hechizo debe aplicarse automáticamente cuando el personaje entra en el área. También impide que el usuario lo elimine. |
| 2 | 0x02 | SPELL_AREA_FLAG_AUTOREMOVE | Si el hechizo debe eliminarse automáticamente cuando el personaje está dentro del área (solo funciona con actualizaciones de misión) |
Nota: El hechizo siempre se elimina al salir del área, SPELL_AREA_FLAG_AUTOREMOVE no afecta a esto.
Ejemplo:
Dentro de quest_start_status, puedes definir la máscara del estado de misión requerido para quest_start.
Dentro de quest_end_status, puedes definir la máscara del estado de misión requerido para quest_end.
Ejemplo:
El área 257 es una caverna en Teldrassil. Lo que queremos es simple: cuando el jugador toma la misión 28725, tiene el aura en la caverna. Cuando termina la misión 28727, el aura desaparece.
Deberías tener el hechizo 92237 al entrar en la caverna SI:
Aquí está el SQL para este ejemplo:
INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `autocast`, `quest_start_status`, `quest_end_status`) VALUES
(92237, 257, 28725, 28727, 1, 74, 11);
| Quest Status | Flag | Explanation |
|---|---|---|
| QUEST_STATUS_NONE = 0 | 1 | El jugador no tiene ni ha tenido la misión en absoluto. Podría aceptarla, pero no lo ha hecho (todavía). |
| QUEST_STATUS_COMPLETE = 1 | 2 | El jugador cumplió los objetivos, pero aún no la ha entregado. |
| 4 (NOT USED) | (Sin usar) | |
| QUEST_STATUS_INCOMPLETE = 3 | 8 | El jugador aún no cumplió los objetivos |
| 16 (NOT USED) | (Sin usar) | |
| QUEST_STATUS_FAILED = 5 | 32 | El jugador falló al cumplir los objetivos por cualquier motivo, p. ej. límite de tiempo |
| QUEST_STATUS_REWARDED = 6 | 64 | El jugador entregó la misión y esto es una especie de interacción post-misión |
Ejemplo para un SQL
Para un `quest_end_status` que debe contener QUEST_STATUS_NONE (1), QUEST_STATUS_COMPLETE (2) y QUEST_STATUS_INCOMPLETE (8):
-- equivalente a `quest_end_status`= 11
UPDATE `spell_area` SET `quest_end_status`= (1|2|8) WHERE `spell`=XXXXX AND `area`=YYYY;
Algunos ejemplos: