@@ -187,8 +187,12 @@ enum SMART_EVENT
187187 SMART_EVENT_ON_SPELL_FAILED = 84 , // SpellID, CooldownMin, CooldownMax
188188 SMART_EVENT_ON_SPELL_START = 85 , // SpellID, CooldownMin, CooldownMax
189189 SMART_EVENT_ON_DESPAWN = 86 , // NONE
190+ SMART_EVENT_SEND_EVENT_TRIGGER = 87 , // UNUSED NEEDS CHERRYPICK
191+ SMART_EVENT_AREATRIGGER_EXIT = 88 , // don't use on 3.3.5a
192+ SMART_EVENT_ON_AURA_APPLIED = 89 , // SpellID, CooldownMin, CooldownMax
193+ SMART_EVENT_ON_AURA_REMOVED = 90 , // SpellID, CooldownMin, CooldownMax
190194
191- SMART_EVENT_END = 87
195+ SMART_EVENT_END = 91
192196};
193197
194198struct SmartEvent
@@ -601,7 +605,13 @@ enum SMART_ACTION
601605 SMART_ACTION_BECOME_PERSONAL_CLONE_FOR_PLAYER = 149 , // don't use on 3.3.5a
602606 SMART_ACTION_TRIGGER_GAME_EVENT = 150 , // eventId, useSaiTargetAsGameEventSource (RESERVED, PENDING CHERRYPICK)
603607 SMART_ACTION_DO_ACTION = 151 , // actionId (RESERVED, PENDING CHERRYPICK)
604- SMART_ACTION_END = 152
608+ 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)
609+ SMART_ACTION_CREDIT_QUEST_OBJECTIVE_TALK_TO = 153 , // (RESERVED, PENDING CHERRYPICK)
610+ SMART_ACTION_DESTROY_CONVERSATION = 154 , // don't use on 3.3.5a
611+ SMART_ACTION_ENTER_VEHICLE = 155 , // seat id (RESERVED, PENDING CHERRYPICK)
612+ SMART_ACTION_BOARD_PASSENGER = 156 , // seat id (RESERVED, PENDING CHERRYPICK)
613+ SMART_ACTION_EXIT_VEHICLE = 157 , // (RESERVED, PENDING CHERRYPICK)
614+ SMART_ACTION_END = 158
605615};
606616
607617enum class SmartActionSummonCreatureFlags
@@ -1381,19 +1391,19 @@ struct SmartTarget
13811391
13821392enum SmartScriptType
13831393{
1384- SMART_SCRIPT_TYPE_CREATURE = 0 , // done
1385- SMART_SCRIPT_TYPE_GAMEOBJECT = 1 , // done
1386- SMART_SCRIPT_TYPE_AREATRIGGER = 2 , // done
1387- SMART_SCRIPT_TYPE_EVENT = 3 , //
1388- SMART_SCRIPT_TYPE_GOSSIP = 4 , //
1389- SMART_SCRIPT_TYPE_QUEST = 5 , //
1390- SMART_SCRIPT_TYPE_SPELL = 6 , //
1391- SMART_SCRIPT_TYPE_TRANSPORT = 7 , //
1392- SMART_SCRIPT_TYPE_INSTANCE = 8 , //
1393- SMART_SCRIPT_TYPE_TIMED_ACTIONLIST = 9 , //
1394- SMART_SCRIPT_TYPE_SCENE = 10 , // RESERVED master branch
1395- SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY = 11 , // RESERVED master branch
1396- SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY_SERVERSIDE = 12 , // RESERVED master branch
1394+ SMART_SCRIPT_TYPE_CREATURE = 0 ,
1395+ SMART_SCRIPT_TYPE_GAMEOBJECT = 1 ,
1396+ SMART_SCRIPT_TYPE_AREATRIGGER = 2 ,
1397+ SMART_SCRIPT_TYPE_EVENT = 3 , // NYI
1398+ SMART_SCRIPT_TYPE_GOSSIP = 4 , // NYI
1399+ SMART_SCRIPT_TYPE_QUEST = 5 , // NYI
1400+ SMART_SCRIPT_TYPE_SPELL = 6 , // NYI
1401+ SMART_SCRIPT_TYPE_TRANSPORT = 7 , // NYI
1402+ SMART_SCRIPT_TYPE_INSTANCE = 8 , // NYI
1403+ SMART_SCRIPT_TYPE_TIMED_ACTIONLIST = 9 ,
1404+ SMART_SCRIPT_TYPE_SCENE = 10 , // RESERVED master branch
1405+ SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY = 11 , // RESERVED master branch
1406+ SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY_CUSTOM = 12 , // RESERVED master branch
13971407 SMART_SCRIPT_TYPE_MAX
13981408};
13991409
@@ -1408,30 +1418,32 @@ enum SmartAITypeMaskId
14081418 SMART_SCRIPT_TYPE_MASK_SPELL = 64 ,
14091419 SMART_SCRIPT_TYPE_MASK_TRANSPORT = 128 ,
14101420 SMART_SCRIPT_TYPE_MASK_INSTANCE = 256 ,
1411- SMART_SCRIPT_TYPE_MASK_TIMED_ACTIONLIST = 512
1421+ SMART_SCRIPT_TYPE_MASK_TIMED_ACTIONLIST = 512 ,
1422+ SMART_SCRIPT_TYPE_MASK_SCENE = 1024 ,
1423+ SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY = 2048
14121424};
14131425
14141426const uint32 SmartAITypeMask[SMART_SCRIPT_TYPE_MAX][2 ] =
14151427{
1416- {SMART_SCRIPT_TYPE_CREATURE, SMART_SCRIPT_TYPE_MASK_CREATURE },
1417- {SMART_SCRIPT_TYPE_GAMEOBJECT, SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
1418- {SMART_SCRIPT_TYPE_AREATRIGGER, SMART_SCRIPT_TYPE_MASK_AREATRIGGER },
1419- {SMART_SCRIPT_TYPE_EVENT, SMART_SCRIPT_TYPE_MASK_EVENT },
1420- {SMART_SCRIPT_TYPE_GOSSIP, SMART_SCRIPT_TYPE_MASK_GOSSIP },
1421- {SMART_SCRIPT_TYPE_QUEST, SMART_SCRIPT_TYPE_MASK_QUEST },
1422- {SMART_SCRIPT_TYPE_SPELL, SMART_SCRIPT_TYPE_MASK_SPELL },
1423- {SMART_SCRIPT_TYPE_TRANSPORT, SMART_SCRIPT_TYPE_MASK_TRANSPORT },
1424- {SMART_SCRIPT_TYPE_INSTANCE, SMART_SCRIPT_TYPE_MASK_INSTANCE },
1425- {SMART_SCRIPT_TYPE_TIMED_ACTIONLIST, SMART_SCRIPT_TYPE_MASK_TIMED_ACTIONLIST },
1426- {SMART_SCRIPT_TYPE_SCENE, 0 },
1427- {SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY, 0 },
1428- {SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY_SERVERSIDE, 0 }
1428+ {SMART_SCRIPT_TYPE_CREATURE, SMART_SCRIPT_TYPE_MASK_CREATURE },
1429+ {SMART_SCRIPT_TYPE_GAMEOBJECT, SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
1430+ {SMART_SCRIPT_TYPE_AREATRIGGER, SMART_SCRIPT_TYPE_MASK_AREATRIGGER },
1431+ {SMART_SCRIPT_TYPE_EVENT, SMART_SCRIPT_TYPE_MASK_EVENT },
1432+ {SMART_SCRIPT_TYPE_GOSSIP, SMART_SCRIPT_TYPE_MASK_GOSSIP },
1433+ {SMART_SCRIPT_TYPE_QUEST, SMART_SCRIPT_TYPE_MASK_QUEST },
1434+ {SMART_SCRIPT_TYPE_SPELL, SMART_SCRIPT_TYPE_MASK_SPELL },
1435+ {SMART_SCRIPT_TYPE_TRANSPORT, SMART_SCRIPT_TYPE_MASK_TRANSPORT },
1436+ {SMART_SCRIPT_TYPE_INSTANCE, SMART_SCRIPT_TYPE_MASK_INSTANCE },
1437+ {SMART_SCRIPT_TYPE_TIMED_ACTIONLIST, SMART_SCRIPT_TYPE_MASK_TIMED_ACTIONLIST },
1438+ {SMART_SCRIPT_TYPE_SCENE, SMART_SCRIPT_TYPE_MASK_SCENE },
1439+ {SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY, SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY },
1440+ {SMART_SCRIPT_TYPE_AREATRIGGER_ENTITY_CUSTOM, SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY }
14291441};
14301442
14311443const uint32 SmartAIEventMask[SMART_EVENT_END][2 ] =
14321444{
14331445 {SMART_EVENT_UPDATE_IC, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_TIMED_ACTIONLIST},
1434- {SMART_EVENT_UPDATE_OOC, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT + SMART_SCRIPT_TYPE_MASK_INSTANCE },
1446+ {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 },
14351447 {SMART_EVENT_HEALTH_PCT, SMART_SCRIPT_TYPE_MASK_CREATURE },
14361448 {SMART_EVENT_MANA_PCT, SMART_SCRIPT_TYPE_MASK_CREATURE },
14371449 {SMART_EVENT_AGGRO, SMART_SCRIPT_TYPE_MASK_CREATURE },
@@ -1476,7 +1488,7 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
14761488 {SMART_EVENT_TRANSPORT_REMOVE_PLAYER, SMART_SCRIPT_TYPE_MASK_TRANSPORT },
14771489 {SMART_EVENT_TRANSPORT_RELOCATE, SMART_SCRIPT_TYPE_MASK_TRANSPORT },
14781490 {SMART_EVENT_INSTANCE_PLAYER_ENTER, SMART_SCRIPT_TYPE_MASK_INSTANCE },
1479- {SMART_EVENT_AREATRIGGER_ONTRIGGER, SMART_SCRIPT_TYPE_MASK_AREATRIGGER },
1491+ {SMART_EVENT_AREATRIGGER_ONTRIGGER, SMART_SCRIPT_TYPE_MASK_AREATRIGGER + SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY },
14801492 {SMART_EVENT_QUEST_ACCEPTED, SMART_SCRIPT_TYPE_MASK_QUEST },
14811493 {SMART_EVENT_QUEST_OBJ_COMPLETION, SMART_SCRIPT_TYPE_MASK_QUEST },
14821494 {SMART_EVENT_QUEST_REWARDED, SMART_SCRIPT_TYPE_MASK_QUEST },
@@ -1490,8 +1502,8 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
14901502 {SMART_EVENT_WAYPOINT_STOPPED, SMART_SCRIPT_TYPE_MASK_CREATURE },
14911503 {SMART_EVENT_WAYPOINT_ENDED, SMART_SCRIPT_TYPE_MASK_CREATURE },
14921504 {SMART_EVENT_TIMED_EVENT_TRIGGERED, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
1493- {SMART_EVENT_UPDATE, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
1494- {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 },
1505+ {SMART_EVENT_UPDATE, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT + SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY },
1506+ {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 },
14951507 {SMART_EVENT_GOSSIP_SELECT, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
14961508 {SMART_EVENT_JUST_CREATED, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
14971509 {SMART_EVENT_GOSSIP_HELLO, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
@@ -1508,32 +1520,36 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
15081520 {SMART_EVENT_DISTANCE_CREATURE, SMART_SCRIPT_TYPE_MASK_CREATURE },
15091521 {SMART_EVENT_DISTANCE_GAMEOBJECT, SMART_SCRIPT_TYPE_MASK_CREATURE },
15101522 {SMART_EVENT_COUNTER_SET, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
1511- {SMART_EVENT_SCENE_START, 0 },
1512- {SMART_EVENT_SCENE_TRIGGER, 0 },
1513- {SMART_EVENT_SCENE_CANCEL, 0 },
1514- {SMART_EVENT_SCENE_COMPLETE, 0 },
1523+ {SMART_EVENT_SCENE_START, SMART_SCRIPT_TYPE_MASK_SCENE },
1524+ {SMART_EVENT_SCENE_TRIGGER, SMART_SCRIPT_TYPE_MASK_SCENE },
1525+ {SMART_EVENT_SCENE_CANCEL, SMART_SCRIPT_TYPE_MASK_SCENE },
1526+ {SMART_EVENT_SCENE_COMPLETE, SMART_SCRIPT_TYPE_MASK_SCENE },
15151527 {SMART_EVENT_SUMMONED_UNIT_DIES, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
15161528 {SMART_EVENT_ON_SPELL_CAST, SMART_SCRIPT_TYPE_MASK_CREATURE },
15171529 {SMART_EVENT_ON_SPELL_FAILED, SMART_SCRIPT_TYPE_MASK_CREATURE },
15181530 {SMART_EVENT_ON_SPELL_START, SMART_SCRIPT_TYPE_MASK_CREATURE },
15191531 {SMART_EVENT_ON_DESPAWN, SMART_SCRIPT_TYPE_MASK_CREATURE },
1532+ {SMART_EVENT_SEND_EVENT_TRIGGER, SMART_SCRIPT_TYPE_MASK_EVENT },
1533+ {SMART_EVENT_AREATRIGGER_EXIT, SMART_SCRIPT_TYPE_MASK_AREATRIGGER_ENTITY },
1534+ {SMART_EVENT_ON_AURA_APPLIED, SMART_SCRIPT_TYPE_MASK_CREATURE },
1535+ {SMART_EVENT_ON_AURA_REMOVED, SMART_SCRIPT_TYPE_MASK_CREATURE },
15201536};
15211537
15221538enum SmartEventFlags
15231539{
1524- SMART_EVENT_FLAG_NOT_REPEATABLE = 0x001 , // Event can not repeat
1525- SMART_EVENT_FLAG_DIFFICULTY_0 = 0x002 , // Event only occurs in instance difficulty 0
1526- SMART_EVENT_FLAG_DIFFICULTY_1 = 0x004 , // Event only occurs in instance difficulty 1
1527- SMART_EVENT_FLAG_DIFFICULTY_2 = 0x008 , // Event only occurs in instance difficulty 2
1528- SMART_EVENT_FLAG_DIFFICULTY_3 = 0x010 , // Event only occurs in instance difficulty 3
1529- SMART_EVENT_FLAG_RESERVED_5 = 0x020 ,
1530- SMART_EVENT_FLAG_RESERVED_6 = 0x040 ,
1531- SMART_EVENT_FLAG_DEBUG_ONLY = 0x080 , // Event only occurs in debug build
1532- SMART_EVENT_FLAG_DONT_RESET = 0x100 , // Event will not reset in SmartScript::OnReset()
1533- SMART_EVENT_FLAG_WHILE_CHARMED = 0x200 , // Event occurs even if AI owner is charmed
1534-
1535- 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),
1536- 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),
1540+ SMART_EVENT_FLAG_NOT_REPEATABLE = 0x001 , // Event can not repeat
1541+ SMART_EVENT_FLAG_DIFFICULTY_0 = 0x002 , // UNUSED, DO NOT REUSE
1542+ SMART_EVENT_FLAG_DIFFICULTY_1 = 0x004 , // UNUSED, DO NOT REUSE
1543+ SMART_EVENT_FLAG_DIFFICULTY_2 = 0x008 , // UNUSED, DO NOT REUSE
1544+ SMART_EVENT_FLAG_DIFFICULTY_3 = 0x010 , // UNUSED, DO NOT REUSE
1545+ SMART_EVENT_FLAG_RESERVED_5 = 0x020 ,
1546+ SMART_EVENT_FLAG_RESERVED_6 = 0x040 ,
1547+ SMART_EVENT_FLAG_DEBUG_ONLY = 0x080 , // Event only occurs in debug build
1548+ SMART_EVENT_FLAG_DONT_RESET = 0x100 , // Event will not reset in SmartScript::OnReset()
1549+ SMART_EVENT_FLAG_WHILE_CHARMED = 0x200 , // Event occurs even if AI owner is charmed
1550+
1551+ 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),
1552+ 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),
15371553
15381554 // Temp flags, used only at runtime, never stored in DB
15391555 SMART_EVENT_FLAG_TEMP_IGNORE_CHANCE_ROLL = 0x40000000 , // Event occurs no matter what roll_chance_i(e.event.event_chance) returns.
0 commit comments