@@ -340,7 +340,7 @@ void PlayerBotMgr::Update(uint32 diff)
340
340
uint32 const minLevel = bg->GetMinLevel () + 10 * bracketId;
341
341
ASSERT (minLevel <= PLAYER_MAX_LEVEL);
342
342
uint32 const maxLevel = std::min<uint32>(minLevel + 9 , PLAYER_MAX_LEVEL);
343
-
343
+
344
344
for (uint32 i = queuedAllianceCount[bracketId]; i < bg->GetMinPlayersPerTeam (); ++i)
345
345
{
346
346
uint32 const botLevel = urand (minLevel, maxLevel);
@@ -1076,7 +1076,7 @@ bool ChatHandler::HandlePartyBotAttackStartCommand(char* args)
1076
1076
SetSentErrorMessage (true );
1077
1077
return false ;
1078
1078
}
1079
-
1079
+
1080
1080
Group* pGroup = pPlayer->GetGroup ();
1081
1081
if (!pGroup)
1082
1082
{
@@ -1099,10 +1099,10 @@ bool ChatHandler::HandlePartyBotAttackStartCommand(char* args)
1099
1099
if (pMember->IsValidAttackTarget (pTarget))
1100
1100
pAI->AttackStart (pTarget);
1101
1101
}
1102
- }
1102
+ }
1103
1103
}
1104
1104
}
1105
-
1105
+
1106
1106
PSendSysMessage (" All party bots are now attacking %s." , pTarget->GetName ());
1107
1107
return true ;
1108
1108
}
@@ -1304,7 +1304,7 @@ bool ChatHandler::HandlePartyBotFocusMarkCommand(char* args)
1304
1304
{
1305
1305
if (PartyBotAI* pAI = dynamic_cast <PartyBotAI*>(pTarget->AI ()))
1306
1306
{
1307
- if (std::find (pAI->m_marksToFocus .begin (), pAI->m_marksToFocus .end (), itrMark->second ) != pAI->m_marksToFocus .end ())
1307
+ if (std::find (pAI->m_marksToFocus .begin (), pAI->m_marksToFocus .end (), itrMark->second ) != pAI->m_marksToFocus .end ())
1308
1308
{
1309
1309
PSendSysMessage (" %s already have focus %s." , pTarget->GetName (), args);
1310
1310
return false ;
@@ -1339,7 +1339,7 @@ bool ChatHandler::HandlePartyBotFocusMarkCommand(char* args)
1339
1339
{
1340
1340
if (PartyBotAI* pAI = dynamic_cast <PartyBotAI*>(pMember->AI ()))
1341
1341
{
1342
- if (std::find (pAI->m_marksToFocus .begin (), pAI->m_marksToFocus .end (), itrMark->second ) != pAI->m_marksToFocus .end ())
1342
+ if (std::find (pAI->m_marksToFocus .begin (), pAI->m_marksToFocus .end (), itrMark->second ) != pAI->m_marksToFocus .end ())
1343
1343
{
1344
1344
// Already have focus mark
1345
1345
continue ;
@@ -1620,7 +1620,7 @@ bool ChatHandler::HandlePartyBotPauseHelper(char* args, bool pause)
1620
1620
else
1621
1621
PSendSysMessage (" %s unpaused." , pTarget->GetName ());
1622
1622
}
1623
-
1623
+
1624
1624
else
1625
1625
SendSysMessage (" Target is not a party bot." );
1626
1626
}
@@ -1638,6 +1638,59 @@ bool ChatHandler::HandlePartyBotUnpauseCommand(char* args)
1638
1638
return HandlePartyBotPauseHelper (args, false );
1639
1639
}
1640
1640
1641
+ bool ChatHandler::HandlePartyBotPullCommand (char * args)
1642
+ {
1643
+ Player* pPlayer = GetSession ()->GetPlayer ();
1644
+ Unit* pTarget = GetSelectedUnit ();
1645
+ if (!pTarget || !pPlayer->IsValidAttackTarget (pTarget, true ))
1646
+ {
1647
+ SendSysMessage (LANG_SELECT_CHAR_OR_CREATURE);
1648
+ SetSentErrorMessage (true );
1649
+ return false ;
1650
+ }
1651
+
1652
+ Group* pGroup = pPlayer->GetGroup ();
1653
+ if (!pGroup)
1654
+ {
1655
+ SendSysMessage (" You are not in a group." );
1656
+ SetSentErrorMessage (true );
1657
+ return false ;
1658
+ }
1659
+
1660
+ uint32 duration;
1661
+ if (!ExtractUInt32 (&args, duration))
1662
+ duration = 10 * IN_MILLISECONDS;
1663
+
1664
+ for (GroupReference* itr = pGroup->GetFirstMember (); itr != nullptr ; itr = itr->next ())
1665
+ {
1666
+ if (Player* pMember = itr->getSource ())
1667
+ {
1668
+ if (pMember == pPlayer)
1669
+ continue ;
1670
+
1671
+ if (pMember->AI ())
1672
+ {
1673
+ if (PartyBotAI* pAI = dynamic_cast <PartyBotAI*>(pMember->AI ()))
1674
+ {
1675
+ if (pAI->m_role == ROLE_MELEE_DPS || pAI->m_role == ROLE_RANGE_DPS)
1676
+ {
1677
+ HandlePartyBotPauseApplyHelper (pMember, duration);
1678
+ continue ;
1679
+ }
1680
+ else if (pAI->m_role == ROLE_TANK)
1681
+ {
1682
+ if (pMember->IsValidAttackTarget (pTarget))
1683
+ pAI->AttackStart (pTarget);
1684
+ }
1685
+ }
1686
+ }
1687
+ }
1688
+ }
1689
+
1690
+ PSendSysMessage (" Tank party bots are pulling %s, DPS party bots are paused for %d seconds." , pTarget->GetName (), (duration / IN_MILLISECONDS));
1691
+ return true ;
1692
+ }
1693
+
1641
1694
bool ChatHandler::HandlePartyBotUnequipCommand (char * args)
1642
1695
{
1643
1696
Player* pTarget = GetSelectedPlayer ();
0 commit comments