diff options
Diffstat (limited to 'src/server/game/AI/SmartScripts')
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 10 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 4 | 
3 files changed, 8 insertions, 8 deletions
| diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 6e6da6f6ca1..3b99529853f 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -2687,13 +2687,13 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e,              }              break;          } -        case SMART_TARGET_VEHICLE_ACCESSORY: +        case SMART_TARGET_VEHICLE_PASSENGER:          {              if (me && me->IsVehicle()) -            { -                if (Unit* target = me->GetVehicleKit()->GetPassenger(e.target.vehicle.seat)) -                    targets.push_back(target); -            } +                for (auto seatItr = me->GetVehicleKit()->Seats.begin(); seatItr != me->GetVehicleKit()->Seats.end(); ++seatItr) +                    if (!e.target.vehicle.seatMask || (e.target.vehicle.seatMask & (1 << seatItr->first))) +                        if (Unit* u = ObjectAccessor::GetUnit(*me, seatItr->second.Passenger.Guid)) +                            targets.push_back(u);              break;          }          case SMART_TARGET_POSITION: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index d521ca2ac84..e90c696d777 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -484,7 +484,7 @@ bool SmartAIMgr::IsTargetValid(SmartScriptHolder const& e)          case SMART_TARGET_STORED:          case SMART_TARGET_LOOT_RECIPIENTS:          case SMART_TARGET_FARTHEST: -        case SMART_TARGET_VEHICLE_ACCESSORY: +        case SMART_TARGET_VEHICLE_PASSENGER:              break;          default:              TC_LOG_ERROR("sql.sql", "SmartAIMgr: Not handled target_type(%u), Entry %d SourceType %u Event %u Action %u, skipped.", e.GetTargetType(), e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType()); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 8b180e40f1c..7a82840c8d4 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1187,7 +1187,7 @@ enum SMARTAI_TARGETS      SMART_TARGET_CLOSEST_FRIENDLY               = 26,   // maxDist, playerOnly      SMART_TARGET_LOOT_RECIPIENTS                = 27,   // all players that have tagged this creature (for kill credit)      SMART_TARGET_FARTHEST                       = 28,   // maxDist, playerOnly, isInLos -    SMART_TARGET_VEHICLE_ACCESSORY              = 29,   // seat number (vehicle can target it's own accessory) +    SMART_TARGET_VEHICLE_PASSENGER              = 29,   // seatMask (0 - all seats)      SMART_TARGET_END                            = 30  }; @@ -1315,7 +1315,7 @@ struct SmartTarget          struct          { -            uint32 seat; +            uint32 seatMask;          } vehicle;      };  }; | 
