feat(Core/Conditions): Add new Condition Unit_In_Combat. (#25569)
This commit is contained in:
parent
a1ff3ed3cf
commit
69c9149ed3
3 changed files with 18 additions and 1 deletions
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();
|
||||
break;
|
||||
}
|
||||
case CONDITION_UNIT_IN_COMBAT:
|
||||
{
|
||||
if (Unit* unit = object->ToUnit())
|
||||
condMeets = unit->IsInCombat();
|
||||
break;
|
||||
}
|
||||
case CONDITION_WORLD_SCRIPT:
|
||||
{
|
||||
condMeets = sWorldState->IsConditionFulfilled(ConditionValue1, ConditionValue2);
|
||||
|
|
@ -804,6 +810,9 @@ uint32 Condition::GetSearcherTypeMaskForCondition()
|
|||
case CONDITION_CHARMED:
|
||||
mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER;
|
||||
break;
|
||||
case CONDITION_UNIT_IN_COMBAT:
|
||||
mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER;
|
||||
break;
|
||||
case CONDITION_PLAYER_QUEUED_RANDOM_DUNGEON:
|
||||
mask |= GRID_MAP_TYPE_MASK_PLAYER;
|
||||
break;
|
||||
|
|
@ -834,6 +843,7 @@ uint32 Condition::GetMaxAvailableConditionTargets()
|
|||
case CONDITION_SOURCE_TYPE_SPELL_CLICK_EVENT:
|
||||
case CONDITION_SOURCE_TYPE_GOSSIP_MENU:
|
||||
case CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION:
|
||||
case CONDITION_SOURCE_TYPE_GOSSIP_HELLO:
|
||||
case CONDITION_SOURCE_TYPE_NPC_VENDOR:
|
||||
case CONDITION_SOURCE_TYPE_SPELL_PROC:
|
||||
case CONDITION_SOURCE_TYPE_OBJECT_VISIBILITY:
|
||||
|
|
@ -2624,6 +2634,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)
|
|||
case CONDITION_TAXI:
|
||||
case CONDITION_IN_WATER:
|
||||
case CONDITION_CHARMED:
|
||||
case CONDITION_UNIT_IN_COMBAT:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,8 +89,9 @@ enum ConditionTypes
|
|||
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_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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue