void Puppet::InitSummon() { Minion::InitSummon(); if (!SetCharmedBy(GetOwner(), CHARM_TYPE_POSSESS)) { if (Player* p = GetOwner()) sLog->outMisc("Puppet::InitSummon (A1) - %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u", p->GetTypeId(), p->GetEntry(), p->GetUnitTypeMask(), p->GetGUIDLow(), p->GetMapId(), p->GetInstanceId(), p->FindMap(), p->IsInWorld() ? 1 : 0, p->IsDuringRemoveFromWorld() ? 1 : 0, p->IsBeingTeleported() ? 1 : 0, p->isBeingLoaded() ? 1 : 0); else { sLog->outMisc("Puppet::InitSummon (B1)"); //ASSERT(false); // ZOMG! } } }
void Puppet::InitSummon() { Minion::InitSummon(); if (!SetCharmedBy(GetOwner(), CHARM_TYPE_POSSESS)) ASSERT(false); }
void Puppet::InitSummon() { Minion::InitSummon(); if (!SetCharmedBy(m_owner, CHARM_TYPE_POSSESS)) assert(false); }
void Puppet::InitSummon() { Minion::InitSummon(); SetCharmedBy(m_owner, CHARM_TYPE_POSSESS); }
bool Vehicle::AddPassenger(Unit *unit, int8 seatId) { if(unit->m_Vehicle != this) return false; SeatMap::iterator seat; if(seatId < 0) // no specific seat requirement { for(seat = m_Seats.begin(); seat != m_Seats.end(); ++seat) if(!seat->second.passenger && seat->second.seatInfo->IsUsable()) break; if(seat == m_Seats.end()) // no available seat return false; } else { seat = m_Seats.find(seatId); if(seat == m_Seats.end()) return false; if(seat->second.passenger) seat->second.passenger->ExitVehicle(); assert(!seat->second.passenger); } sLog.outDebug("Unit %s enter vehicle entry %u id %u dbguid %u", unit->GetName(), GetEntry(), m_vehicleInfo->m_ID, GetDBTableGUIDLow()); seat->second.passenger = unit; if(seat->second.seatInfo->IsUsable()) { assert(m_usableSeatNum); --m_usableSeatNum; if(!m_usableSeatNum) RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); } if(!(seat->second.seatInfo->m_flags & 0x4000)) unit->addUnitState(UNIT_STAT_ONVEHICLE); //SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_24); unit->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT); VehicleSeatEntry const *veSeat = seat->second.seatInfo; unit->m_movementInfo.t_x = veSeat->m_attachmentOffsetX; unit->m_movementInfo.t_y = veSeat->m_attachmentOffsetY; unit->m_movementInfo.t_z = veSeat->m_attachmentOffsetZ; unit->m_movementInfo.t_o = 0; unit->m_movementInfo.t_time = 0; // 1 for player unit->m_movementInfo.t_seat = seat->first; if(unit->GetTypeId() == TYPEID_PLAYER && seat->first == 0 && seat->second.seatInfo->m_flags & 0x800) // not right if (!SetCharmedBy(unit, CHARM_TYPE_VEHICLE)) assert(false); if(IsInWorld()) { unit->SendMonsterMoveTransport(this); GetMap()->CreatureRelocation(this, GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation()); } //if(unit->GetTypeId() == TYPEID_PLAYER) // ((Player*)unit)->SendTeleportAckMsg(); //unit->SendMovementFlagUpdate(); return true; }