aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Vehicle/Vehicle.cpp9
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp9
2 files changed, 17 insertions, 1 deletions
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
index cfa3adcf555..7e37b5212ae 100644
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp
@@ -393,7 +393,7 @@ void Vehicle::InstallAccessory(uint32 entry, int8 seatId, bool minion, uint8 typ
* @author Machiavelli
* @date 17-2-2013
*
- * @param [in, out] The prospective passenger.
+ * @param unit The prospective passenger.
* @param seatId Identifier for the seat. Value of -1 indicates the next available seat.
*
* @return true if it succeeds, false if it fails.
@@ -766,6 +766,13 @@ bool VehicleJoinEvent::Execute(uint64, uint32)
Target->RemovePendingEventsForSeat(Seat->first);
Target->RemovePendingEventsForPassenger(Passenger);
+ // Passenger might've died in the meantime - abort if this is the case
+ if (!Passenger->IsAlive())
+ {
+ Abort(0);
+ return true;
+ }
+
Passenger->SetVehicle(Target);
Seat->second.Passenger.Guid = Passenger->GetGUID();
Seat->second.Passenger.IsUnselectable = Passenger->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
index 4efe13e02c9..c432352bdea 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
@@ -654,6 +654,15 @@ class spell_marrowgar_bone_spike_graveyard : public SpellScriptLoader
{
Unit* target = *itr;
target->CastSpell(target, BoneSpikeSummonId[i], true);
+ if (!target->IsAlive()) // make sure we don't get any stuck spikes on dead targets
+ {
+ if (Aura* aura = target->GetAura(SPELL_IMPALED))
+ {
+ if (Creature* spike = ObjectAccessor::GetCreature(*target, aura->GetCasterGUID()))
+ spike->DespawnOrUnsummon();
+ aura->Remove();
+ }
+ }
}
marrowgarAI->Talk(SAY_BONESPIKE);