mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
feat(Core/Conditions): Add new Condition Unit_In_Combat. (#25569)
This commit is contained in:
5
data/sql/updates/pending_db_world/rev_1777019405.sql
Normal file
5
data/sql/updates/pending_db_world/rev_1777019405.sql
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
-- Set New Condition (Death Knight Initiate).
|
||||||
|
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 20) AND (`SourceGroup` = 0) AND (`SourceEntry` = 28406) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 106) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 0) AND (`ConditionValue2` = 0) AND (`ConditionValue3` = 0);
|
||||||
|
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||||
|
(20, 0, 28406, 0, 0, 106, 0, 0, 0, 0, 1, 0, 0, '', 'Death Knight Initiate gossip only available if the npc is not in combat.');
|
||||||
@@ -591,6 +591,12 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo)
|
|||||||
condMeets = unit->IsCharmed();
|
condMeets = unit->IsCharmed();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case CONDITION_UNIT_IN_COMBAT:
|
||||||
|
{
|
||||||
|
if (Unit* unit = object->ToUnit())
|
||||||
|
condMeets = unit->IsInCombat();
|
||||||
|
break;
|
||||||
|
}
|
||||||
case CONDITION_WORLD_SCRIPT:
|
case CONDITION_WORLD_SCRIPT:
|
||||||
{
|
{
|
||||||
condMeets = sWorldState->IsConditionFulfilled(ConditionValue1, ConditionValue2);
|
condMeets = sWorldState->IsConditionFulfilled(ConditionValue1, ConditionValue2);
|
||||||
@@ -804,6 +810,9 @@ uint32 Condition::GetSearcherTypeMaskForCondition()
|
|||||||
case CONDITION_CHARMED:
|
case CONDITION_CHARMED:
|
||||||
mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER;
|
mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER;
|
||||||
break;
|
break;
|
||||||
|
case CONDITION_UNIT_IN_COMBAT:
|
||||||
|
mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER;
|
||||||
|
break;
|
||||||
case CONDITION_PLAYER_QUEUED_RANDOM_DUNGEON:
|
case CONDITION_PLAYER_QUEUED_RANDOM_DUNGEON:
|
||||||
mask |= GRID_MAP_TYPE_MASK_PLAYER;
|
mask |= GRID_MAP_TYPE_MASK_PLAYER;
|
||||||
break;
|
break;
|
||||||
@@ -834,6 +843,7 @@ uint32 Condition::GetMaxAvailableConditionTargets()
|
|||||||
case CONDITION_SOURCE_TYPE_SPELL_CLICK_EVENT:
|
case CONDITION_SOURCE_TYPE_SPELL_CLICK_EVENT:
|
||||||
case CONDITION_SOURCE_TYPE_GOSSIP_MENU:
|
case CONDITION_SOURCE_TYPE_GOSSIP_MENU:
|
||||||
case CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION:
|
case CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION:
|
||||||
|
case CONDITION_SOURCE_TYPE_GOSSIP_HELLO:
|
||||||
case CONDITION_SOURCE_TYPE_NPC_VENDOR:
|
case CONDITION_SOURCE_TYPE_NPC_VENDOR:
|
||||||
case CONDITION_SOURCE_TYPE_SPELL_PROC:
|
case CONDITION_SOURCE_TYPE_SPELL_PROC:
|
||||||
case CONDITION_SOURCE_TYPE_OBJECT_VISIBILITY:
|
case CONDITION_SOURCE_TYPE_OBJECT_VISIBILITY:
|
||||||
@@ -2624,6 +2634,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)
|
|||||||
case CONDITION_TAXI:
|
case CONDITION_TAXI:
|
||||||
case CONDITION_IN_WATER:
|
case CONDITION_IN_WATER:
|
||||||
case CONDITION_CHARMED:
|
case CONDITION_CHARMED:
|
||||||
|
case CONDITION_UNIT_IN_COMBAT:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,8 +89,9 @@ enum ConditionTypes
|
|||||||
CONDITION_WORLD_SCRIPT = 103, // conditionId state 0 true if WorldState::IsConditionFulfilled returns true
|
CONDITION_WORLD_SCRIPT = 103, // conditionId state 0 true if WorldState::IsConditionFulfilled returns true
|
||||||
CONDITION_AI_DATA = 104, // dataId value 0 true if AI::GetData returns value
|
CONDITION_AI_DATA = 104, // dataId value 0 true if AI::GetData returns value
|
||||||
CONDITION_PLAYER_QUEUED_RANDOM_DUNGEON = 105, // checkDifficulty difficulty 0 true if player is queued for a random dungeon via RDF
|
CONDITION_PLAYER_QUEUED_RANDOM_DUNGEON = 105, // checkDifficulty difficulty 0 true if player is queued for a random dungeon via RDF
|
||||||
|
CONDITION_UNIT_IN_COMBAT = 106, // 0 0 0 true if unit is engaged in combat
|
||||||
|
|
||||||
CONDITION_AC_END = 106 // placeholder
|
CONDITION_AC_END = 107 // placeholder
|
||||||
};
|
};
|
||||||
|
|
||||||
/*! Documentation on implementing a new ConditionSourceType:
|
/*! Documentation on implementing a new ConditionSourceType:
|
||||||
|
|||||||
Reference in New Issue
Block a user