diff options
| author | QAston <qaston@gmail.com> | 2010-12-31 12:52:37 +0100 |
|---|---|---|
| committer | QAston <qaston@gmail.com> | 2010-12-31 12:52:37 +0100 |
| commit | c220fbbc458cd53da12ee47648d87dac0583874e (patch) | |
| tree | c127b801e14ce48ac46f61d07cdbe500da9b0e10 /src/server/game/Entities | |
| parent | bb4bd46d213415841a2c7f8fa4b6b299d2183de1 (diff) | |
| parent | 82b79080c0477d99ff03179e4d052c0009591409 (diff) | |
Merge branch 'master' of https://github.com/TrinityCore/TrinityCore
Diffstat (limited to 'src/server/game/Entities')
| -rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 4 | ||||
| -rwxr-xr-x | src/server/game/Entities/Player/Player.h | 1 | ||||
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 17 | ||||
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 1 | ||||
| -rwxr-xr-x | src/server/game/Entities/Vehicle/Vehicle.cpp | 13 |
5 files changed, 14 insertions, 22 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index de2f5d16a3f..9a102de874f 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -15017,8 +15017,8 @@ bool Player::SatisfyQuestExclusiveGroup(Quest const* qInfo, bool msg) return false; } - // alternative quest already started or completed - if (m_QuestStatus.find(exclude_Id) != m_QuestStatus.end() || m_RewardedQuests.find(exclude_Id) != m_RewardedQuests.end()) + // alternative quest already started or completed - but don't check rewarded states if both are repeatable + if (m_QuestStatus.find(exclude_Id) != m_QuestStatus.end() || (!(qInfo->IsRepeatable() && Nquest->IsRepeatable()) && m_RewardedQuests.find(exclude_Id) != m_RewardedQuests.end())) { if (msg) SendCanTakeQuestResponse(INVALIDREASON_DONT_HAVE_REQ); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index d1f217d7a3e..7d9838001e4 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1936,6 +1936,7 @@ class Player : public Unit, public GridObject<Player> bool isHonorOrXPTarget(Unit* pVictim); bool GetsRecruitAFriendBonus(bool forXP); + uint8 GetGrantableLevels() { return GetByteValue(PLAYER_FIELD_BYTES, 1); } ReputationMgr& GetReputationMgr() { return m_reputationMgr; } ReputationMgr const& GetReputationMgr() const { return m_reputationMgr; } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 1459ff2b8c3..b1c96166c1c 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -418,11 +418,11 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 M void Unit::SendMonsterMoveTransport(Unit *vehicleOwner) { // TODO: Turn into BuildMonsterMoveTransport packet and allow certain variables (for npc movement aboard vehicles) - WorldPacket data(SMSG_MONSTER_MOVE_TRANSPORT, GetPackGUID().size()+vehicleOwner->GetPackGUID().size()); + WorldPacket data(SMSG_MONSTER_MOVE_TRANSPORT, GetPackGUID().size()+vehicleOwner->GetPackGUID().size() + 47); data.append(GetPackGUID()); data.append(vehicleOwner->GetPackGUID()); data << int8(GetTransSeat()); - data << uint8(0); // unk boolean + data << uint8(0); // unk boolean data << GetPositionX() - vehicleOwner->GetPositionX(); data << GetPositionY() - vehicleOwner->GetPositionY(); data << GetPositionZ() - vehicleOwner->GetPositionZ(); @@ -431,10 +431,10 @@ void Unit::SendMonsterMoveTransport(Unit *vehicleOwner) data << GetTransOffsetO(); // facing angle? data << uint32(SPLINEFLAG_TRANSPORT); data << uint32(0); // move time - data << uint32(1); - data << uint32(GetTransOffsetX()); - data << uint32(GetTransOffsetY()); - data << uint32(GetTransOffsetZ()); + data << uint32(1); // amount of waypoints + data << GetTransOffsetX(); + data << GetTransOffsetY(); + data << GetTransOffsetZ(); SendMessageToSet(&data, true); } @@ -6493,10 +6493,9 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger return false; } else if (damage > 0) - { triggered_spell_id = 58597; - target = this; - } + + target = this; break; } // Righteous Vengeance diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index f3f9dc70882..d9c9acdfa5f 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1255,6 +1255,7 @@ class Unit : public WorldObject inline bool HealthAbovePct(int32 pct) const { return GetHealth() * (uint64)100 > GetMaxHealth() * (uint64)pct; } inline float GetHealthPct() const { return GetMaxHealth() ? 100.f * GetHealth() / GetMaxHealth() : 0.0f; } inline uint32 CountPctFromMaxHealth(int32 pct) const { return CalculatePctN(GetMaxHealth(), pct); } + inline uint32 CountPctFromCurHealth(int32 pct) const { return CalculatePctN(GetHealth(), pct); } void SetHealth(uint32 val); void SetMaxHealth(uint32 val); diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 8a60d5e7562..6e4d49f65ef 100755 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -423,17 +423,6 @@ void Vehicle::RemovePassenger(Unit *unit) sScriptMgr->OnRemovePassenger(this, unit); } -void Vehicle::EjectPassenger(Unit* passenger, Unit* controller) -{ - SeatMap::const_iterator m_SeatsItr; - for (m_SeatsItr = m_Seats.begin(); m_SeatsItr != m_Seats.end(); ++m_SeatsItr) - if (m_SeatsItr->second.passenger == passenger) - if (m_SeatsItr->second.seatInfo->IsEjectable()) - return passenger->ExitVehicle(); - else - sLog->outError("Player %u attempted to eject unit GUID "UI64FMTD" from non-ejectable seat.", controller->GetGUIDLow(), passenger->GetGUID()); -} - void Vehicle::RelocatePassengers(float x, float y, float z, float ang) { Map *map = me->GetMap(); @@ -443,6 +432,8 @@ void Vehicle::RelocatePassengers(float x, float y, float z, float ang) for (SeatMap::const_iterator itr = m_Seats.begin(); itr != m_Seats.end(); ++itr) if (Unit *passenger = itr->second.passenger) { + ASSERT(passenger->IsInWorld()); + float px = x + passenger->m_movementInfo.t_pos.m_positionX; float py = y + passenger->m_movementInfo.t_pos.m_positionY; float pz = z + passenger->m_movementInfo.t_pos.m_positionZ; |
