aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrunningnak3d <runningnak3d@gmail.com>2011-02-07 10:15:54 -0700
committerrunningnak3d <runningnak3d@gmail.com>2011-02-07 10:15:54 -0700
commit97882544e1583cf86cf7823fd6d80b17f8b27cb6 (patch)
tree90d74afb5eab94435d84162cdecb6aec2fade3dd
parentf7eba9c94012621b576485812c62172668435da0 (diff)
Core/SAI: Add the ability to remove UNIT_FIELD_BYTES_1 in SAI (action
91)
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp11
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp1
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h13
3 files changed, 21 insertions, 4 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index 06576b0f5a0..24a1881771c 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -1233,7 +1233,16 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u
if (!targets) return;
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++)
if (IsUnit((*itr)))
- (*itr)->ToUnit()->SetByteFlag(UNIT_FIELD_BYTES_1, 3, e.action.unitByte.byte);
+ (*itr)->ToUnit()->SetByteFlag(UNIT_FIELD_BYTES_1, 3, e.action.setunitByte.byte1);
+ break;
+ }
+ case SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1:
+ {
+ ObjectList* targets = GetTargets(e, unit);
+ if (!targets) return;
+ for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++)
+ if (IsUnit((*itr)))
+ (*itr)->ToUnit()->RemoveByteFlag(UNIT_FIELD_BYTES_1, 3, e.action.delunitByte.byte1);
break;
}
default:
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
index 2d18985f0e1..b6bda73d7c2 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
@@ -767,6 +767,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder &e)
case SMART_ACTION_CALL_RANDOM_RANGE_TIMED_ACTIONLIST:
case SMART_ACTION_RANDOM_MOVE:
case SMART_ACTION_SET_UNIT_FIELD_BYTES_1:
+ case SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1:
break;
default:
sLog->outErrorDb("SmartAIMgr: Not handled action_type(%u), event_type(%u), Entry %d SourceType %u Event %u, skipped.", e.GetActionType(), e.GetEventType(), e.entryOrGuid, e.GetScriptType(), e.event_id);
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
index ab20e862aca..0cb91af2e04 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
@@ -446,7 +446,9 @@ enum SMART_ACTION
SMART_ACTION_SET_UNIT_FIELD_BYTES_1 = 90, // bytes, target
- SMART_ACTION_END = 91,
+ SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1 = 91, // bytes, target
+
+ SMART_ACTION_END = 92,
};
struct SmartAction
@@ -789,8 +791,13 @@ struct SmartAction
struct
{
- uint32 byte;
- } unitByte;
+ uint32 byte1;
+ } setunitByte;
+
+ struct
+ {
+ uint32 byte1;
+ } delunitByte;
struct
{