Skip to content

Commit 2d79f6d

Browse files
committed
PetAI: Prevent user actions during scripted sequences
1 parent fb02876 commit 2d79f6d

1 file changed

Lines changed: 20 additions & 4 deletions

File tree

src/game/Entities/PetHandler.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,9 @@ void WorldSession::HandlePetAction(WorldPacket& recv_data)
135135
break;
136136
case COMMAND_ATTACK:
137137
{
138+
if (petUnit->AI()->GetCombatScriptStatus())
139+
break;
140+
138141
Unit* targetUnit = targetGuid ? _player->GetMap()->GetUnit(targetGuid) : nullptr;
139142

140143
if (!targetUnit)
@@ -172,7 +175,9 @@ void WorldSession::HandlePetAction(WorldPacket& recv_data)
172175
{
173176
case COMMAND_STAY: // flat=1792 // STAY
174177
{
175-
petUnit->AttackStop(true, true);
178+
if (!petUnit->AI()->GetCombatScriptStatus())
179+
petUnit->AttackStop(true, true);
180+
176181
charmInfo->SetCommandState(COMMAND_STAY);
177182
break;
178183
}
@@ -181,12 +186,17 @@ void WorldSession::HandlePetAction(WorldPacket& recv_data)
181186
if (!petUnit->hasUnitState(UNIT_STAT_POSSESSED))
182187
charmInfo->SetIsRetreating(true);
183188

184-
petUnit->AttackStop(true, true);
189+
if (!petUnit->AI()->GetCombatScriptStatus())
190+
petUnit->AttackStop(true, true);
191+
185192
charmInfo->SetCommandState(COMMAND_FOLLOW);
186193
break;
187194
}
188195
case COMMAND_ATTACK: // spellid=1792 // ATTACK
189196
{
197+
if (petUnit->AI()->GetCombatScriptStatus())
198+
break;
199+
190200
charmInfo->SetIsRetreating();
191201
charmInfo->SetSpellOpener();
192202

@@ -276,8 +286,11 @@ void WorldSession::HandlePetAction(WorldPacket& recv_data)
276286
{
277287
case REACT_PASSIVE: // passive
278288
{
279-
petUnit->AttackStop(true, true);
280-
charmInfo->SetSpellOpener();
289+
if (!petUnit->AI()->GetCombatScriptStatus())
290+
{
291+
petUnit->AttackStop(true, true);
292+
charmInfo->SetSpellOpener();
293+
}
281294
}
282295
case REACT_DEFENSIVE: // recovery
283296
case REACT_AGGRESSIVE: // activete
@@ -291,6 +304,9 @@ void WorldSession::HandlePetAction(WorldPacket& recv_data)
291304
case ACT_PASSIVE: // 0x01
292305
case ACT_ENABLED: // 0xC1 spell
293306
{
307+
if (petUnit->AI()->GetCombatScriptStatus())
308+
break;
309+
294310
charmInfo->SetIsRetreating();
295311
charmInfo->SetSpellOpener();
296312

0 commit comments

Comments
 (0)