diff --git a/data/sql/updates/pending_db_world/rev_1785435206257470800.sql b/data/sql/updates/pending_db_world/rev_1785435206257470800.sql new file mode 100644 index 000000000..34d430c0b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1785435206257470800.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` = 44270) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 24707) AND (`ConditionValue3` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 44270, 0, 0, 31, 0, 3, 24707, 0, 0, 0, 0, '', 'Breathing Tube (44270) Targets Buoy (24707)'); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 3aefb59a4..e8ce6b29d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4181,8 +4181,11 @@ void Unit::SetCurrentCastedSpell(Spell* pSpell) } case CURRENT_CHANNELED_SPELL: { - // channel spells always break generic non-delayed and any channeled spells - InterruptSpell(CURRENT_GENERIC_SPELL, false); + // channel spells always break generic non-delayed and any channeled spells, + // unless the channel itself is allowed to run alongside other actions + if (!pSpell->GetSpellInfo()->IsActionAllowedChannel()) + InterruptSpell(CURRENT_GENERIC_SPELL, false); + InterruptSpell(CURRENT_CHANNELED_SPELL, true, true, bySelf); // it also does break autorepeat if not Auto Shot