AzerothCore
Pages :

spell_area

<-Back-to:World

The `spell_area` table

This table is used to apply a specific spell aura to the player within an area in the game. When any player enters this area or somehow interacts with a quest, this aura will be handled accordingly.

Table Structure

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

Description of the fields

spell

The spell ID of the spell to be casted on the player. See Spell.dbc.

area

The area ID. Type ".gps" in-game and find the "Area:" number to use for this cell. Also see AreaTable.dbc.

quest_start

The entry of the quest which the player must have in the state defined by quest_start_status. See quest_template.id.

quest_end

The entry of the quest which the player must not have in the state defined by quest_end_status. See quest_template.id. Setting both quest_start and quest_end to the same value is useless.

aura_spell

If set, this value (plus or minus aura spell ID from Spell.dbc) imposes additional condition.

The value has the following effect:

  • < 0 聽(negative values) If the player has aura聽-aura_spell then the spell will not be activated.
  • 0 聽 this column is ignored.
  • > 0 聽(positive values) If the player has no aura聽aura_spell聽then the spell will not be activated.

racemask

This ID is automatically called from聽ChrRaces.dbc. The bitmask is entered here.

  • 0, 1791 = All Races
  • 690聽(2 + 16 + 32 + 128 + 512) = Horde Only
  • 1101 (1 + 4 + 8 + 64 + 1024 ) = Alliance Only

gender

The gender type this entry applies to. 0 = Male, 1 = Female, 2 = Any.

flags

Flag Value Name Comment
1 0x01 SPELL_AREA_FLAG_AUTOCAST If the spell should be automatically applied when the character enters the area. Also prevents the user from removing it.
2 0x02 SPELL_AREA_FLAG_AUTOREMOVE If the spell should be automatically removed when the character is inside the area (only works with quest updates)

Note: Spell is allways removed on leaving area,聽SPELL_AREA_FLAG_AUTOREMOVE does not effect this.

Example:

  • flags = 0 :聽Spell not added on enter (must be added manually),聽not automatically removed on quest update,聽but removed on leave.
  • flags = 1 : Spell is automatically applied on enter, not automatically removed on quest update, but removed on leave.
  • flags = 2 : Spell not added on enter (must be added manually),聽automatically removed on quest update and removed on leave.
  • flags = 3 : (Default)聽Spell is automatically applied on enter,聽automatically removed on quest update and removed on leave.

quest_start_status, quest_end_status

Within quest_start_status, you can define the mask of quest status required for quest_start.

Within quest_end_status, 聽you can define the mask of quest status required聽for quest_end.聽

Example:

Area聽257 is a cavern on Teldrassil. What we want is simple : When the player take the聽28725 quest, he have the aura in the cavern. When he finish the聽28727 quest, the aura disappear.

You should have the spell聽92237 when entering the cavern IF :

  • The start quest聽28725 is incomplete, complete or rewarded (2 | 8 | 64 =聽74)
  • The end quest聽28727 is not taked (none), incomplete or complete BUT not rewarded (1聽| 2聽| 8 = 11)

Here is the SQL for this example :聽

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 Player does not have or had quest at all. He could accept it, but he did not (yet).
QUEST_STATUS_COMPLETE = 1 2 Player fulfilled objectives, but did not hand it in yet.
QUEST_STATUS_UNAVAILABLE = 2 4 (NOT USED) (Not used)
QUEST_STATUS_INCOMPLETE = 3 8 Player did not fulfill objectives yet
QUEST_STATUS_AVAILABLE = 4 16 (NOT USED) (Not used)
QUEST_STATUS_FAILED = 5 32 Player failed to fulfill objectives for any reason, e.g. time limit
QUEST_STATUS_REWARDED = 6 64 Player handed quest in and this is sort of a post-quest interaction

Example for a SQL

聽For a `quest_end_status` that should contain QUEST_STATUS_NONE (1), QUEST_STATUS_COMPLETE (2) and QUEST_STATUS_INCOMPLETE (8):

-- equivalent to `quest_end_status`= 11
UPDATE `spell_area` SET `quest_end_status`= (1|2|8) WHERE `spell`=XXXXX AND `area`=YYYY;

Some examples:

  • An area could pacify all players (spell 39331)
  • Another area could full heal every 1 second (spell 48591)
  • Teleport player out of an area (spell 53141)
  • Factions-specific buffs, e.g. in Icecrown Citadel:
  • "Hellscream's Warsong" (spell聽73822) for horde聽
  • "Strength of Wrynn" (spell聽73828) for alliance
  • Even region-based buffs, such as area 440 - Tanaris.