void PacketBuilder::WriteStopMovement(Vector3 const& pos, uint32 splineId, ByteBuffer& data, Unit* unit) { ObjectGuid guid = unit->GetGUID(); ObjectGuid transport = unit->GetTransGUID(); data << float(pos.z); data << float(pos.x); data << uint32(splineId); data << float(pos.y); data << float(0.f); // Most likely transport Y data << float(0.f); // Most likely transport Z data << float(0.f); // Most likely transport X data.WriteBit(1); // Parabolic speed // esi+4Ch data.WriteBit(guid[0]); data.WriteBits(MonsterMoveStop, 3); data.WriteBit(1); data.WriteBit(1); data.WriteBit(1); data.WriteBits(0, 20); data.WriteBit(1); data.WriteBit(guid[3]); data.WriteBit(1); data.WriteBit(1); data.WriteBit(1); data.WriteBit(1); data.WriteGuidMask(guid, 7, 4); data.WriteBit(1); data.WriteBit(guid[5]); data.WriteBits(0, 22); // WP count data.WriteBit(guid[6]); data.WriteBit(0); // Fake bit data.WriteGuidMask(transport, 7, 1, 3, 0, 6, 4, 5, 2); data.WriteBit(0); // Send no block data.WriteBit(0); data.WriteGuidMask(guid, 2, 1); data.FlushBits(); data.WriteByteSeq(guid[1]); data.WriteGuidBytes(transport, 6, 4, 1, 7, 0, 3, 5, 2); data.WriteGuidBytes(guid, 5, 3, 6, 0, 7, 2, 4); }
void PlayerMenu::WriteQuestRewardsData(Quest const* quest, ByteBuffer &data, uint32 xpValue) { data << int32(quest->GetRewChoiceItemsCount()); for (int i = 0; i < QUEST_REWARD_CHOICES_COUNT; i++) { data << int32(quest->RewardChoiceItemId[i]); data << int32(quest->RewardChoiceItemCount[i]); } data << int32(quest->GetRewItemsCount()); for (int i = 0; i < QUEST_REWARDS_COUNT; i++) { data << int32(quest->RewardItemId[i]); data << int32(quest->RewardItemIdCount[i]); } data << int32(quest->GetRewMoney()); data << int32(xpValue); data << int32(quest->GetCharTitleId()); data << int32(quest->GetBonusTalents()); data << int32(quest->GetRewardReputationMask()); for (int i = 0; i < QUEST_REPUTATIONS_COUNT; i++) { data << int32(quest->RewardFactionId[i]); data << int32(quest->RewardFactionValueId[i]); data << int32(quest->RewardFactionValueIdOverride[i]); } data << int32(quest->GetRewSpell()); data << int32(quest->GetRewSpellCast()); for (int i = 0; i < QUEST_REWARD_CURRENCY_COUNT; i++) { data << int32(quest->RewardCurrencyId[i]); data << int32(quest->RewardCurrencyCount[i]); } data << int32(quest->GetRewardSkillId()); data << int32(quest->GetRewardSkillPoints()); data.WriteBit(0); // unknown data.FlushBits(); }
void ReputationMgr::SendInitialReputations() { uint16 count = 256; RepListID a = 0; ByteBuffer bitData; WorldPacket data(SMSG_INITIALIZE_FACTIONS, (count * (1 + 4)) + 32); for (FactionStateList::iterator itr = _factions.begin(); itr != _factions.end(); ++itr) { // fill in absent fields for (; a != itr->first; ++a) { data << uint8(0); data << uint32(0); bitData.WriteBit(0); } // fill in encountered data data << uint8(itr->second.Flags); data << uint32(itr->second.Standing); // Bonus reputation (Your account has unlocked bonus reputation gain with this faction.) bitData.WriteBit(0); itr->second.needSend = false; ++a; } // fill in absent fields for (; a != count; ++a) { data << uint8(0); data << uint32(0); bitData.WriteBit(0); } bitData.FlushBits(); data.append(bitData); _player->SendDirectMessage(&data); }
void PacketBuilder::WriteStopMovement(Vector3 const& pos, uint32 splineId, ByteBuffer& data) { ObjectGuid moverGUID; ObjectGuid transportGUID; data << float(pos.z); data << float(pos.x); data << uint32(splineId); //SplineId data << float(pos.y); data << float(0.f); // Most likely transport Y data << float(0.f); // Most likely transport Z data << float(0.f); // Most likely transport X data.WriteBit(1); // Parabolic speed // esi+4Ch data.WriteBit(moverGUID[0]); data.WriteBits(MonsterMoveStop, 3); data.WriteBit(1); data.WriteBit(1); data.WriteBit(1); data.WriteBits(0, 20); data.WriteBit(1); data.WriteBit(moverGUID[3]); data.WriteBit(1); data.WriteBit(1); data.WriteBit(1); data.WriteBit(1); data.WriteBit(moverGUID[7]); data.WriteBit(moverGUID[4]); data.WriteBit(1); data.WriteBit(moverGUID[5]); data.WriteBits(0, 22); // WP count data.WriteBit(moverGUID[6]); data.WriteBit(0); // Fake bit data.WriteBit(transportGUID[7]); data.WriteBit(transportGUID[1]); data.WriteBit(transportGUID[3]); data.WriteBit(transportGUID[0]); data.WriteBit(transportGUID[6]); data.WriteBit(transportGUID[4]); data.WriteBit(transportGUID[5]); data.WriteBit(transportGUID[2]); data.WriteBit(0); // Send no block data.WriteBit(0); data.WriteBit(moverGUID[2]); data.WriteBit(moverGUID[1]); data.FlushBits(); data.WriteByteSeq(moverGUID[1]); data.WriteByteSeq(transportGUID[6]); data.WriteByteSeq(transportGUID[4]); data.WriteByteSeq(transportGUID[1]); data.WriteByteSeq(transportGUID[7]); data.WriteByteSeq(transportGUID[0]); data.WriteByteSeq(transportGUID[3]); data.WriteByteSeq(transportGUID[5]); data.WriteByteSeq(transportGUID[2]); data.WriteByteSeq(moverGUID[5]); data.WriteByteSeq(moverGUID[3]); data.WriteByteSeq(moverGUID[6]); data.WriteByteSeq(moverGUID[0]); data.WriteByteSeq(moverGUID[7]); data.WriteByteSeq(moverGUID[2]); data.WriteByteSeq(moverGUID[4]); }
void WorldSession::HandleGuildFinderGetApplications(WorldPacket& /*recvPacket*/) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_LF_GUILD_GET_APPLICATIONS"); std::list<MembershipRequest> applicatedGuilds = sGuildFinderMgr->GetAllMembershipRequestsForPlayer(GetPlayer()->GetGUIDLow()); uint32 applicationsCount = applicatedGuilds.size(); ByteBuffer bufferDataHead; ByteBuffer bufferDataTail; if (applicationsCount > 0) { bufferDataHead.WriteBits(applicationsCount, 19); for (std::list<MembershipRequest>::const_iterator itr = applicatedGuilds.begin(); itr != applicatedGuilds.end(); ++itr) { Guild* guild = sGuildMgr->GetGuildById(itr->GetGuildId()); LFGuildSettings guildSettings = sGuildFinderMgr->GetGuildSettings(itr->GetGuildId()); MembershipRequest request = *itr; ObjectGuid guildGuid = ObjectGuid(guild->GetGUID()); bufferDataHead.WriteBit(guildGuid[0]); bufferDataHead.WriteBit(guildGuid[4]); bufferDataHead.WriteBit(guildGuid[2]); bufferDataHead.WriteBit(guildGuid[7]); bufferDataHead.WriteBits(guild->GetName().size(), 7); bufferDataHead.WriteBit(guildGuid[1]); bufferDataHead.WriteBit(guildGuid[3]); bufferDataHead.WriteBits(request.GetComment().size(), 10); bufferDataHead.WriteBit(guildGuid[6]); bufferDataHead.WriteBit(guildGuid[5]); bufferDataTail << uint32(guildSettings.GetInterests()); bufferDataTail << uint32(0); if (guild->GetName().size() > 0) bufferDataTail.append(guild->GetName().c_str(), guild->GetName().size()); bufferDataTail.WriteByteSeq(guildGuid[4]); bufferDataTail << uint32(guildSettings.GetClassRoles()); bufferDataTail.WriteByteSeq(guildGuid[6]); bufferDataTail.WriteByteSeq(guildGuid[5]); bufferDataTail << uint32(time(NULL) - request.GetSubmitTime()); // Time since application (seconds) bufferDataTail.WriteByteSeq(guildGuid[1]); bufferDataTail.WriteByteSeq(guildGuid[3]); bufferDataTail.WriteByteSeq(guildGuid[0]); bufferDataTail.WriteByteSeq(guildGuid[7]); bufferDataTail.WriteByteSeq(guildGuid[2]); bufferDataTail << uint32(request.GetExpiryTime() - time(NULL)); // Time left to application expiry (seconds) bufferDataTail << uint32(guildSettings.GetAvailability()); if (request.GetComment().size() > 0) bufferDataTail.append(request.GetComment().c_str(), request.GetComment().size()); } bufferDataHead.FlushBits(); } else { bufferDataHead.WriteBits(0, 24); } WorldPacket data(SMSG_LF_GUILD_MEMBERSHIP_LIST_UPDATED, bufferDataHead.size() + bufferDataTail.size() + 8); data.append(bufferDataHead); if (bufferDataTail.size() > 0) data.append(bufferDataTail); data << uint32(10 - sGuildFinderMgr->CountRequestsFromPlayer(GetPlayer()->GetGUIDLow())); // Applications count left GetPlayer()->SendDirectMessage(&data); }
void PacketBuilder::WriteStopMovement(Vector3 const& pos, uint32 splineId, ByteBuffer& data, Unit* unit) { ObjectGuid guid = unit->GetGUID(); ObjectGuid transport = unit->GetTransGUID(); data << float(0.f); // Most likely transport Y data << uint32(getMSTime()); data << float(0.f); // Most likely transport Z data << float(0.f); // Most likely transport X data << float(pos.x); data << float(pos.y); data << float(pos.z); data.WriteBit(guid[3]); data.WriteBit(1); data.WriteBit(guid[6]); data.WriteBit(1); data.WriteBit(1); data.WriteBits(0, 3); data.WriteBit(1); data.WriteBit(guid[2]); data.WriteBit(guid[7]); data.WriteBit(guid[5]); data.WriteBit(1); data.WriteBit(guid[4]); data.WriteBits(0, 22); // WP count data.WriteBit(1); data.WriteBit(0); data.WriteBit(guid[0]); data.WriteBit(transport[3]); data.WriteBit(transport[6]); data.WriteBit(transport[5]); data.WriteBit(transport[0]); data.WriteBit(transport[1]); data.WriteBit(transport[2]); data.WriteBit(transport[4]); data.WriteBit(transport[7]); data.WriteBit(1); data.WriteBit(1); // Parabolic speed // esi+4Ch data.WriteBit(1); data.WriteBits(0, 20); data.WriteBit(guid[1]); data.WriteBit(0); data.WriteBit(0); data.WriteBit(1); data.FlushBits(); data.WriteByteSeq(guid[3]); data.WriteByteSeq(transport[7]); data.WriteByteSeq(transport[3]); data.WriteByteSeq(transport[2]); data.WriteByteSeq(transport[0]); data.WriteByteSeq(transport[6]); data.WriteByteSeq(transport[4]); data.WriteByteSeq(transport[5]); data.WriteByteSeq(transport[1]); data.WriteByteSeq(guid[7]); data.WriteByteSeq(guid[5]); data.WriteByteSeq(guid[1]); data.WriteByteSeq(guid[2]); data.WriteByteSeq(guid[6]); data.WriteByteSeq(guid[0]); data.WriteByteSeq(guid[4]); }
void PacketBuilder::WriteStopMovement(Vector3 const& pos, uint32 splineId, ByteBuffer& data, Unit* unit) { ObjectGuid guid = unit->GetGUID(); ObjectGuid transport = unit->GetTransGUID(); data << float(0.f); // Most likely transport Y data << uint32(splineId); data << float(0.f); // Most likely transport Z data << float(0.f); // Most likely transport X data << float(pos.x); data << float(pos.y); data << float(pos.z); data.WriteBit(guid[3]); data.WriteBit(1); data.WriteBit(guid[6]); data.WriteBit(1); data.WriteBit(1); data.WriteBits(MonsterMoveStop, 3); data.WriteBit(1); data.WriteBit(guid[2]); data.WriteBit(guid[7]); data.WriteBit(guid[5]); data.WriteBit(1); data.WriteBit(guid[4]); data.WriteBits(0, 22); // WP count data.WriteBit(1); data.WriteBit(0); data.WriteBit(guid[0]); uint8 transportBitsOrder[8] = {3, 6, 5, 0, 1, 2, 4, 7}; uint8 transportBytesOrder[8] = {7, 3, 2, 0, 6, 4, 5, 1}; data.WriteBitInOrder(transport, transportBitsOrder); data.WriteBit(1); data.WriteBit(1); // Parabolic speed // esi+4Ch data.WriteBit(1); data.WriteBits(0, 20); data.WriteBit(guid[1]); data.WriteBit(0); data.WriteBit(0); data.WriteBit(1); data.FlushBits(); data.WriteByteSeq(guid[3]); data.WriteBytesSeq(transport, transportBytesOrder); data.WriteByteSeq(guid[7]); data.WriteByteSeq(guid[5]); data.WriteByteSeq(guid[1]); data.WriteByteSeq(guid[2]); data.WriteByteSeq(guid[6]); data.WriteByteSeq(guid[0]); data.WriteByteSeq(guid[4]); }
void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacket* data, uint32 mask, ObjectGuid guid, bool full /*= false*/) { // Prevent sending an empty packet if (mask == GROUP_UPDATE_FLAG_NONE) return; std::set<uint32> phases; if (player) player->GetPhaseMgr().GetActivePhases(phases); ByteBuffer dataBuffer; if (mask & GROUP_UPDATE_FLAG_POWER_TYPE) // if update power type, update current/max power also mask |= (GROUP_UPDATE_FLAG_CUR_POWER | GROUP_UPDATE_FLAG_MAX_POWER); if (mask & GROUP_UPDATE_FLAG_PET_POWER_TYPE) // same for pets mask |= (GROUP_UPDATE_FLAG_PET_CUR_POWER | GROUP_UPDATE_FLAG_PET_MAX_POWER); Pet* pet = NULL; if (!player) mask &= ~GROUP_UPDATE_FULL; else if (!(pet = player->GetPet())) mask &= ~GROUP_UPDATE_PET; mask |= GROUP_UPDATE_FLAG_STATUS; //if (player && (mask & GROUP_UPDATE_FLAG_STATUS)) // mask |= GROUP_UPDATE_PLAYER_BASE; data->Initialize(SMSG_PARTY_MEMBER_STATS, 200); // average value data->WriteBit(guid[5]); data->WriteBit(guid[2]); data->WriteBit(false); data->WriteBit(guid[6]); data->WriteBit(guid[4]); data->WriteBit(guid[7]); data->WriteBit(guid[3]); data->WriteBit(false); data->WriteBit(guid[0]); data->WriteBit(guid[1]); data->FlushBits(); data->WriteByteSeq(guid[4]); data->WriteByteSeq(guid[6]); if (mask & GROUP_UPDATE_FLAG_STATUS) { uint16 status = MEMBER_STATUS_OFFLINE; if (player) { status |= MEMBER_STATUS_ONLINE; if (player->IsPvP()) status |= MEMBER_STATUS_PVP; if (player->isDead()) status |= MEMBER_STATUS_DEAD; if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) status |= MEMBER_STATUS_GHOST; if (player->IsFFAPvP()) status |= MEMBER_STATUS_PVP_FFA; if (player->isAFK()) status |= MEMBER_STATUS_AFK; if (player->isDND()) status |= MEMBER_STATUS_DND; } dataBuffer << uint16(status); } if (mask & GROUP_UPDATE_FLAG_MOP_UNK) { dataBuffer << uint8(1); // Same realms ? dataBuffer << uint8(0); // in lfg } if (mask & GROUP_UPDATE_FLAG_CUR_HP) dataBuffer << uint32(player->GetHealth()); if (mask & GROUP_UPDATE_FLAG_MAX_HP) dataBuffer << uint32(player->GetMaxHealth()); Powers powerType = POWER_MANA; if (player) powerType = player->getPowerType(); if (mask & GROUP_UPDATE_FLAG_POWER_TYPE) dataBuffer << uint8(powerType); if (mask & GROUP_UPDATE_FLAG_UNK_20) dataBuffer << uint16(0); if (mask & GROUP_UPDATE_FLAG_CUR_POWER) dataBuffer << uint16(player->GetPower(powerType)); if (mask & GROUP_UPDATE_FLAG_MAX_POWER) dataBuffer << uint16(player->GetMaxPower(powerType)); if (mask & GROUP_UPDATE_FLAG_LEVEL) dataBuffer << uint16(player->getLevel()); if (mask & GROUP_UPDATE_FLAG_ZONE) dataBuffer << uint16(player->GetZoneId()); if (mask & GROUP_UPDATE_FLAG_UNK400) dataBuffer << uint16(player->GetAreaId()); if (mask & GROUP_UPDATE_FLAG_POSITION) dataBuffer << uint16(player->GetPositionX()) << uint16(player->GetPositionY()) << uint16(player->GetPositionZ()); if (mask & GROUP_UPDATE_FLAG_AURAS) { uint64 auramask = player->GetAuraUpdateMaskForRaid(); dataBuffer << uint8(1); dataBuffer << uint64(auramask); dataBuffer << uint32(MAX_AURAS); for (uint32 i = 0; i < MAX_AURAS; ++i) { if (!(auramask & (UI64LIT(1) << i))) continue; AuraApplication const* aurApp = player->GetVisibleAura(i); if (!aurApp) { dataBuffer << uint32(0); dataBuffer << uint8(0); dataBuffer << uint32(0); continue; } dataBuffer << uint32(aurApp->GetBase()->GetId()); dataBuffer << uint8(aurApp->GetFlags()); dataBuffer << uint32(aurApp->GetBase()->GetEffectMask()); if (aurApp->GetFlags() & AFLAG_ANY_EFFECT_AMOUNT_SENT) { uint32 auraEffectMask = aurApp->GetBase()->GetEffectMask(); size_t pos = dataBuffer.wpos(); uint8 amount_count = 0; dataBuffer << uint8(0); for (uint32 j = 0; j < MAX_SPELL_EFFECTS; ++j) { if (!(auraEffectMask & (1 << j))) continue; if (constAuraEffectPtr eff = aurApp->GetBase()->GetEffect(j)) // NULL if effect flag not set dataBuffer << float(eff->GetAmount()); else dataBuffer << float(0.0f); ++amount_count; } dataBuffer.put(pos, amount_count); } } } if (mask & GROUP_UPDATE_FLAG_PET_GUID) { if (pet) dataBuffer << uint64(pet->GetGUID()); else dataBuffer << uint64(0); } if (mask & GROUP_UPDATE_FLAG_PET_NAME) { if (pet) dataBuffer << pet->GetName(); else dataBuffer << uint8(0); } if (mask & GROUP_UPDATE_FLAG_PET_MODEL_ID) { if (pet) dataBuffer << uint16(pet->GetDisplayId()); else dataBuffer << uint16(0); } if (mask & GROUP_UPDATE_FLAG_PET_CUR_HP) { if (pet) dataBuffer << uint32(pet->GetHealth()); else dataBuffer << uint32(0); } if (mask & GROUP_UPDATE_FLAG_PET_MAX_HP) { if (pet) dataBuffer << uint32(pet->GetMaxHealth()); else dataBuffer << uint32(0); } if (mask & GROUP_UPDATE_FLAG_PET_POWER_TYPE) { if (pet) dataBuffer << uint8(pet->getPowerType()); else dataBuffer << uint8(0); } if (mask & GROUP_UPDATE_FLAG_MOP_UNK_2) dataBuffer << uint16(0); // Unk if (mask & GROUP_UPDATE_FLAG_PET_CUR_POWER) { if (pet) dataBuffer << uint16(pet->GetPower(pet->getPowerType())); else dataBuffer << uint16(0); } if (mask & GROUP_UPDATE_FLAG_PET_MAX_POWER) { if (pet) dataBuffer << uint16(pet->GetMaxPower(pet->getPowerType())); else dataBuffer << uint16(0); } if (mask & GROUP_UPDATE_FLAG_PET_AURAS) { if (pet) { uint64 auramask = pet->GetAuraUpdateMaskForRaid(); dataBuffer << uint8(1); dataBuffer << uint64(auramask); dataBuffer << uint32(MAX_AURAS); for (uint32 i = 0; i < MAX_AURAS; ++i) { if (!(auramask & (UI64LIT(1) << i))) continue; AuraApplication const* aurApp = pet->GetVisibleAura(i); if (!aurApp) { dataBuffer << uint32(0); dataBuffer << uint8(0); dataBuffer << uint32(0); continue; } dataBuffer << uint32(aurApp->GetBase()->GetId()); dataBuffer << uint8(aurApp->GetFlags()); dataBuffer << uint32(aurApp->GetBase()->GetEffectMask()); if (aurApp->GetFlags() & AFLAG_ANY_EFFECT_AMOUNT_SENT) { uint32 auraEffectMask = aurApp->GetBase()->GetEffectMask(); size_t pos = dataBuffer.wpos(); uint8 count = 0; dataBuffer << uint8(0); for (uint32 j = 0; j < MAX_SPELL_EFFECTS; ++j) { if (!(auraEffectMask & (1 << j))) continue; if (constAuraEffectPtr eff = aurApp->GetBase()->GetEffect(j)) // NULL if effect flag not set dataBuffer << float(eff->GetAmount()); else dataBuffer << float(0.0f); ++count; } dataBuffer.put(pos, count); } } } else { dataBuffer << uint8(0); dataBuffer << uint64(0); dataBuffer << uint32(0); } } if (mask & GROUP_UPDATE_FLAG_VEHICLE_SEAT) { if (Vehicle* veh = player->GetVehicle()) dataBuffer << uint32(veh->GetVehicleInfo()->m_seatID[player->m_movementInfo.t_seat]); else dataBuffer << uint32(0); } if (mask & GROUP_UPDATE_FLAG_PHASE) { dataBuffer << uint32(phases.empty() ? 0x8 : 0x10); // Same as found in SMSG_SET_PHASE_SHIFT. dataBuffer.WriteBits(phases.size(), 23); // Phases Count. dataBuffer.FlushBits(); for (std::set<uint32>::const_iterator itr = phases.begin(); itr != phases.end(); ++itr) *data << uint16(*itr); } if (mask & GROUP_UPDATE_FLAG_UNK_2000000) dataBuffer << uint16(0); if (mask & GROUP_UPDATE_FLAG_UNK_4000000) dataBuffer << uint32(0); /* this flags are not handled by client */ /*if (mask & GROUP_UPDATE_FLAG_UNK_8000000) dataBuffer << uint8(0); if (mask & GROUP_UPDATE_FLAG_UNK_10000000) dataBuffer << uint8(0); if (mask & GROUP_UPDATE_FLAG_UNK_20000000) dataBuffer << uint8(253); if (mask & GROUP_UPDATE_FLAG_UNK_40000000) dataBuffer << uint8(0);*/ *data << uint32(dataBuffer.size()); data->append(dataBuffer); data->WriteByteSeq(guid[3]); data->WriteByteSeq(guid[5]); *data << uint32(mask); data->WriteByteSeq(guid[0]); data->WriteByteSeq(guid[1]); data->WriteByteSeq(guid[2]); data->WriteByteSeq(guid[7]); }
void PacketBuilder::WriteStopMovement(Vector3 const& pos, uint32 splineId, ByteBuffer& data, Unit* unit) { ObjectGuid guid = unit->GetGUID(); ObjectGuid transport = unit->GetTransGUID(); data << float(0.f); data << uint32(getMSTime()); data << float(0.f); data << float(0.f); data << float(unit->GetPositionX()); data << float(unit->GetPositionY()); data << float(unit->GetPositionZ()); data.WriteBit(guid[3]); data.WriteBit(!unit->movespline->splineflags.raw()); data.WriteBit(guid[6]); data.WriteBit(1); data.WriteBit(1); data.WriteBits(0, 3); data.WriteBit(1); data.WriteBit(guid[2]); data.WriteBit(guid[7]); data.WriteBit(guid[5]); data.WriteBit(1); data.WriteBit(guid[4]); data.WriteBits(0, 22); // WP count data.WriteBit(1); data.WriteBit(0); data.WriteBit(guid[0]); data.WriteBit(transport[3]); data.WriteBit(transport[6]); data.WriteBit(transport[5]); data.WriteBit(transport[0]); data.WriteBit(transport[1]); data.WriteBit(transport[2]); data.WriteBit(transport[4]); data.WriteBit(transport[7]); data.WriteBit(1); data.WriteBit(1); // Parabolic speed // esi+4Ch data.WriteBit(1); data.WriteBits(0, 20); data.WriteBit(guid[1]); data.WriteBit(0); data.WriteBit(0); data.WriteBit(0); data.FlushBits(); data.WriteByteSeq(guid[3]); data.WriteByteSeq(transport[7]); data.WriteByteSeq(transport[3]); data.WriteByteSeq(transport[2]); data.WriteByteSeq(transport[0]); data.WriteByteSeq(transport[6]); data.WriteByteSeq(transport[5]); data.WriteByteSeq(transport[4]); data.WriteByteSeq(transport[1]); if (unit->movespline->splineflags.raw()) data << uint32(unit->movespline->splineflags.raw()); data.WriteByteSeq(guid[7]); data.WriteByteSeq(guid[5]); data.WriteByteSeq(guid[1]); data.WriteByteSeq(guid[2]); data.WriteByteSeq(guid[6]); data.WriteByteSeq(guid[0]); data.WriteByteSeq(guid[4]); }