aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h112
1 files changed, 62 insertions, 50 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
index 329f9f65de6..d94a3473646 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
@@ -187,8 +187,10 @@ enum SMART_EVENT
SMART_EVENT_ON_SPELL_FAILED = 84, // SpellID, CooldownMin, CooldownMax
SMART_EVENT_ON_SPELL_START = 85, // SpellID, CooldownMin, CooldownMax
SMART_EVENT_ON_DESPAWN = 86, // NONE
+ SMART_EVENT_SEND_EVENT_TRIGGER = 87, // UNUSED NEEDS CHERRYPICK
+ SMART_EVENT_AREATRIGGER_EXIT = 88, // don't use on 3.3.5a
- SMART_EVENT_END = 87
+ SMART_EVENT_END = 89
};
struct SmartEvent
@@ -601,7 +603,13 @@ enum SMART_ACTION
SMART_ACTION_BECOME_PERSONAL_CLONE_FOR_PLAYER = 149, // don't use on 3.3.5a
SMART_ACTION_TRIGGER_GAME_EVENT = 150, // eventId, useSaiTargetAsGameEventSource (RESERVED, PENDING CHERRYPICK)
SMART_ACTION_DO_ACTION = 151, // actionId (RESERVED, PENDING CHERRYPICK)
- SMART_ACTION_END = 152
+ SMART_ACTION_COMPLETE_QUEST = 152, // QuestId. Regular quests with objectives can't be completed with this action (only quests with QUEST_FLAGS_COMPLETION_EVENT, QUEST_FLAGS_COMPLETION_AREA_TRIGGER or QUEST_FLAGS_TRACKING_EVENT) (RESERVED, PENDING CHERRYPICK)
+ SMART_ACTION_CREDIT_QUEST_OBJECTIVE_TALK_TO = 153, // (RESERVED, PENDING CHERRYPICK)
+ SMART_ACTION_DESTROY_CONVERSATION = 154, // don't use on 3.3.5a
+ SMART_ACTION_ENTER_VEHICLE = 155, // seat id (RESERVED, PENDING CHERRYPICK)
+ SMART_ACTION_BOARD_PASSENGER = 156, // seat id (RESERVED, PENDING CHERRYPICK)
+ SMART_ACTION_EXIT_VEHICLE = 157, // (RESERVED, PENDING CHERRYPICK)
+ SMART_ACTION_END = 158
};
enum class SmartActionSummonCreatureFlags
@@ -1381,19 +1389,19 @@ struct SmartTarget
enum SmartScriptType
{
- SMART_SCRIPT_TYPE_CREATURE = 0, //done
- SMART_SCRIPT_TYPE_GAMEOBJECT = 1, //done
- SMART_SCRIPT_TYPE_AREATRIGGER = 2, //done
- SMART_SCRIPT_TYPE_EVENT = 3, //
- SMART_SCRIPT_TYPE_GOSSIP = 4, //
- SMART_SCRIPT_TYPE_QUEST = 5, //
- SMART_SCRIPT_TYPE_SPELL = 6, //
- SMART_SCRIPT_TYPE_TRANSPORT = 7, //
- SMART_SCRIPT_TYPE_INSTANCE = 8, //
- SMART_SCRIPT_TYPE_TIMED_ACTIONLIST = 9, //
- SMART_SCRIPT_TYPE_SCENE = 10, // RESERVED master branch
- SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY = 11, // RESERVED master branch
- SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY_SERVERSIDE = 12, // RESERVED master branch
+ SMART_SCRIPT_TYPE_CREATURE = 0,
+ SMART_SCRIPT_TYPE_GAMEOBJECT = 1,
+ SMART_SCRIPT_TYPE_AREATRIGGER = 2,
+ SMART_SCRIPT_TYPE_EVENT = 3, // NYI
+ SMART_SCRIPT_TYPE_GOSSIP = 4, // NYI
+ SMART_SCRIPT_TYPE_QUEST = 5, // NYI
+ SMART_SCRIPT_TYPE_SPELL = 6, // NYI
+ SMART_SCRIPT_TYPE_TRANSPORT = 7, // NYI
+ SMART_SCRIPT_TYPE_INSTANCE = 8, // NYI
+ SMART_SCRIPT_TYPE_TIMED_ACTIONLIST = 9,
+ SMART_SCRIPT_TYPE_SCENE = 10, // RESERVED master branch
+ SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY = 11, // RESERVED master branch
+ SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY_CUSTOM = 12, // RESERVED master branch
SMART_SCRIPT_TYPE_MAX
};
@@ -1408,30 +1416,32 @@ enum SmartAITypeMaskId
SMART_SCRIPT_TYPE_MASK_SPELL = 64,
SMART_SCRIPT_TYPE_MASK_TRANSPORT = 128,
SMART_SCRIPT_TYPE_MASK_INSTANCE = 256,
- SMART_SCRIPT_TYPE_MASK_TIMED_ACTIONLIST = 512
+ SMART_SCRIPT_TYPE_MASK_TIMED_ACTIONLIST = 512,
+ SMART_SCRIPT_TYPE_MASK_SCENE = 1024,
+ SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY = 2048
};
const uint32 SmartAITypeMask[SMART_SCRIPT_TYPE_MAX][2] =
{
- {SMART_SCRIPT_TYPE_CREATURE, SMART_SCRIPT_TYPE_MASK_CREATURE },
- {SMART_SCRIPT_TYPE_GAMEOBJECT, SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
- {SMART_SCRIPT_TYPE_AREATRIGGER, SMART_SCRIPT_TYPE_MASK_AREATRIGGER },
- {SMART_SCRIPT_TYPE_EVENT, SMART_SCRIPT_TYPE_MASK_EVENT },
- {SMART_SCRIPT_TYPE_GOSSIP, SMART_SCRIPT_TYPE_MASK_GOSSIP },
- {SMART_SCRIPT_TYPE_QUEST, SMART_SCRIPT_TYPE_MASK_QUEST },
- {SMART_SCRIPT_TYPE_SPELL, SMART_SCRIPT_TYPE_MASK_SPELL },
- {SMART_SCRIPT_TYPE_TRANSPORT, SMART_SCRIPT_TYPE_MASK_TRANSPORT },
- {SMART_SCRIPT_TYPE_INSTANCE, SMART_SCRIPT_TYPE_MASK_INSTANCE },
- {SMART_SCRIPT_TYPE_TIMED_ACTIONLIST, SMART_SCRIPT_TYPE_MASK_TIMED_ACTIONLIST },
- {SMART_SCRIPT_TYPE_SCENE, 0 },
- {SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY, 0 },
- {SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY_SERVERSIDE, 0 }
+ {SMART_SCRIPT_TYPE_CREATURE, SMART_SCRIPT_TYPE_MASK_CREATURE },
+ {SMART_SCRIPT_TYPE_GAMEOBJECT, SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
+ {SMART_SCRIPT_TYPE_AREATRIGGER, SMART_SCRIPT_TYPE_MASK_AREATRIGGER },
+ {SMART_SCRIPT_TYPE_EVENT, SMART_SCRIPT_TYPE_MASK_EVENT },
+ {SMART_SCRIPT_TYPE_GOSSIP, SMART_SCRIPT_TYPE_MASK_GOSSIP },
+ {SMART_SCRIPT_TYPE_QUEST, SMART_SCRIPT_TYPE_MASK_QUEST },
+ {SMART_SCRIPT_TYPE_SPELL, SMART_SCRIPT_TYPE_MASK_SPELL },
+ {SMART_SCRIPT_TYPE_TRANSPORT, SMART_SCRIPT_TYPE_MASK_TRANSPORT },
+ {SMART_SCRIPT_TYPE_INSTANCE, SMART_SCRIPT_TYPE_MASK_INSTANCE },
+ {SMART_SCRIPT_TYPE_TIMED_ACTIONLIST, SMART_SCRIPT_TYPE_MASK_TIMED_ACTIONLIST },
+ {SMART_SCRIPT_TYPE_SCENE, SMART_SCRIPT_TYPE_MASK_SCENE },
+ {SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY, SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY },
+ {SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY_CUSTOM, SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY }
};
const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
{
{SMART_EVENT_UPDATE_IC, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_TIMED_ACTIONLIST},
- {SMART_EVENT_UPDATE_OOC, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT + SMART_SCRIPT_TYPE_MASK_INSTANCE },
+ {SMART_EVENT_UPDATE_OOC, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT + SMART_SCRIPT_TYPE_MASK_INSTANCE + SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY },
{SMART_EVENT_HEALTH_PCT, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_MANA_PCT, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_AGGRO, SMART_SCRIPT_TYPE_MASK_CREATURE },
@@ -1476,7 +1486,7 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
{SMART_EVENT_TRANSPORT_REMOVE_PLAYER, SMART_SCRIPT_TYPE_MASK_TRANSPORT },
{SMART_EVENT_TRANSPORT_RELOCATE, SMART_SCRIPT_TYPE_MASK_TRANSPORT },
{SMART_EVENT_INSTANCE_PLAYER_ENTER, SMART_SCRIPT_TYPE_MASK_INSTANCE },
- {SMART_EVENT_AREATRIGGER_ONTRIGGER, SMART_SCRIPT_TYPE_MASK_AREATRIGGER },
+ {SMART_EVENT_AREATRIGGER_ONTRIGGER, SMART_SCRIPT_TYPE_MASK_AREATRIGGER + SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY },
{SMART_EVENT_QUEST_ACCEPTED, SMART_SCRIPT_TYPE_MASK_QUEST },
{SMART_EVENT_QUEST_OBJ_COMPLETION, SMART_SCRIPT_TYPE_MASK_QUEST },
{SMART_EVENT_QUEST_REWARDED, SMART_SCRIPT_TYPE_MASK_QUEST },
@@ -1490,8 +1500,8 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
{SMART_EVENT_WAYPOINT_STOPPED, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_WAYPOINT_ENDED, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_TIMED_EVENT_TRIGGERED, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
- {SMART_EVENT_UPDATE, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
- {SMART_EVENT_LINK, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT + SMART_SCRIPT_TYPE_MASK_AREATRIGGER + SMART_SCRIPT_TYPE_MASK_EVENT + SMART_SCRIPT_TYPE_MASK_GOSSIP + SMART_SCRIPT_TYPE_MASK_QUEST + SMART_SCRIPT_TYPE_MASK_SPELL + SMART_SCRIPT_TYPE_MASK_TRANSPORT + SMART_SCRIPT_TYPE_MASK_INSTANCE },
+ {SMART_EVENT_UPDATE, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT + SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY },
+ {SMART_EVENT_LINK, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT + SMART_SCRIPT_TYPE_MASK_AREATRIGGER + SMART_SCRIPT_TYPE_MASK_EVENT + SMART_SCRIPT_TYPE_MASK_GOSSIP + SMART_SCRIPT_TYPE_MASK_QUEST + SMART_SCRIPT_TYPE_MASK_SPELL + SMART_SCRIPT_TYPE_MASK_TRANSPORT + SMART_SCRIPT_TYPE_MASK_INSTANCE + SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY },
{SMART_EVENT_GOSSIP_SELECT, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
{SMART_EVENT_JUST_CREATED, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
{SMART_EVENT_GOSSIP_HELLO, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
@@ -1508,32 +1518,34 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
{SMART_EVENT_DISTANCE_CREATURE, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_DISTANCE_GAMEOBJECT, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_COUNTER_SET, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
- {SMART_EVENT_SCENE_START, 0 },
- {SMART_EVENT_SCENE_TRIGGER, 0 },
- {SMART_EVENT_SCENE_CANCEL, 0 },
- {SMART_EVENT_SCENE_COMPLETE, 0 },
+ {SMART_EVENT_SCENE_START, SMART_SCRIPT_TYPE_MASK_SCENE },
+ {SMART_EVENT_SCENE_TRIGGER, SMART_SCRIPT_TYPE_MASK_SCENE },
+ {SMART_EVENT_SCENE_CANCEL, SMART_SCRIPT_TYPE_MASK_SCENE },
+ {SMART_EVENT_SCENE_COMPLETE, SMART_SCRIPT_TYPE_MASK_SCENE },
{SMART_EVENT_SUMMONED_UNIT_DIES, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
{SMART_EVENT_ON_SPELL_CAST, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_ON_SPELL_FAILED, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_ON_SPELL_START, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_ON_DESPAWN, SMART_SCRIPT_TYPE_MASK_CREATURE },
+ {SMART_EVENT_SEND_EVENT_TRIGGER, SMART_SCRIPT_TYPE_MASK_EVENT },
+ {SMART_EVENT_AREATRIGGER_EXIT, SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY }
};
enum SmartEventFlags
{
- SMART_EVENT_FLAG_NOT_REPEATABLE = 0x001, //Event can not repeat
- SMART_EVENT_FLAG_DIFFICULTY_0 = 0x002, //Event only occurs in instance difficulty 0
- SMART_EVENT_FLAG_DIFFICULTY_1 = 0x004, //Event only occurs in instance difficulty 1
- SMART_EVENT_FLAG_DIFFICULTY_2 = 0x008, //Event only occurs in instance difficulty 2
- SMART_EVENT_FLAG_DIFFICULTY_3 = 0x010, //Event only occurs in instance difficulty 3
- SMART_EVENT_FLAG_RESERVED_5 = 0x020,
- SMART_EVENT_FLAG_RESERVED_6 = 0x040,
- SMART_EVENT_FLAG_DEBUG_ONLY = 0x080, //Event only occurs in debug build
- SMART_EVENT_FLAG_DONT_RESET = 0x100, //Event will not reset in SmartScript::OnReset()
- SMART_EVENT_FLAG_WHILE_CHARMED = 0x200, //Event occurs even if AI owner is charmed
-
- SMART_EVENT_FLAG_DIFFICULTY_ALL = (SMART_EVENT_FLAG_DIFFICULTY_0|SMART_EVENT_FLAG_DIFFICULTY_1|SMART_EVENT_FLAG_DIFFICULTY_2|SMART_EVENT_FLAG_DIFFICULTY_3),
- SMART_EVENT_FLAGS_ALL = (SMART_EVENT_FLAG_NOT_REPEATABLE|SMART_EVENT_FLAG_DIFFICULTY_ALL|SMART_EVENT_FLAG_RESERVED_5|SMART_EVENT_FLAG_RESERVED_6|SMART_EVENT_FLAG_DEBUG_ONLY|SMART_EVENT_FLAG_DONT_RESET|SMART_EVENT_FLAG_WHILE_CHARMED),
+ SMART_EVENT_FLAG_NOT_REPEATABLE = 0x001, // Event can not repeat
+ SMART_EVENT_FLAG_DIFFICULTY_0 = 0x002, // UNUSED, DO NOT REUSE
+ SMART_EVENT_FLAG_DIFFICULTY_1 = 0x004, // UNUSED, DO NOT REUSE
+ SMART_EVENT_FLAG_DIFFICULTY_2 = 0x008, // UNUSED, DO NOT REUSE
+ SMART_EVENT_FLAG_DIFFICULTY_3 = 0x010, // UNUSED, DO NOT REUSE
+ SMART_EVENT_FLAG_RESERVED_5 = 0x020,
+ SMART_EVENT_FLAG_RESERVED_6 = 0x040,
+ SMART_EVENT_FLAG_DEBUG_ONLY = 0x080, //Event only occurs in debug build
+ SMART_EVENT_FLAG_DONT_RESET = 0x100, //Event will not reset in SmartScript::OnReset()
+ SMART_EVENT_FLAG_WHILE_CHARMED = 0x200, //Event occurs even if AI owner is charmed
+
+ SMART_EVENT_FLAG_DIFFICULTY_ALL = (SMART_EVENT_FLAG_DIFFICULTY_0 | SMART_EVENT_FLAG_DIFFICULTY_1 | SMART_EVENT_FLAG_DIFFICULTY_2 | SMART_EVENT_FLAG_DIFFICULTY_3),
+ SMART_EVENT_FLAGS_ALL = (SMART_EVENT_FLAG_NOT_REPEATABLE| SMART_EVENT_FLAG_DIFFICULTY_ALL | SMART_EVENT_FLAG_RESERVED_5 | SMART_EVENT_FLAG_RESERVED_6 | SMART_EVENT_FLAG_DEBUG_ONLY | SMART_EVENT_FLAG_DONT_RESET | SMART_EVENT_FLAG_WHILE_CHARMED),
// Temp flags, used only at runtime, never stored in DB
SMART_EVENT_FLAG_TEMP_IGNORE_CHANCE_ROLL = 0x40000000, //Event occurs no matter what roll_chance_i(e.event.event_chance) returns.