mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 16:38:42 +01:00
Core/SAI: Extended SMART_TARGET_VEHICLE_PASSENGER to allow specifying
seat mask instead of single seat index (can now target all passengers)
This commit is contained in:
3
sql/updates/world/3.3.5/2018_01_16_00_world.sql
Normal file
3
sql/updates/world/3.3.5/2018_01_16_00_world.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
--
|
||||
UPDATE `smart_scripts` SET `target_param1`=(1 << `target_param1`) WHERE `target_type`=29;
|
||||
--
|
||||
@@ -3135,13 +3135,13 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /*
|
||||
}
|
||||
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))
|
||||
l->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))
|
||||
l->push_back(u);
|
||||
break;
|
||||
}
|
||||
case SMART_TARGET_POSITION:
|
||||
|
||||
@@ -454,7 +454,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());
|
||||
|
||||
@@ -1217,7 +1217,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
|
||||
};
|
||||
@@ -1345,7 +1345,7 @@ struct SmartTarget
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 seat;
|
||||
uint32 seatMask;
|
||||
} vehicle;
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user