mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 01:37:00 +00:00
Merge commit 'origin/master' into 330
Conflicts: src/game/MiscHandler.cpp
This commit is contained in:
commit
f46c1aaabb
45 changed files with 2216 additions and 287 deletions
|
|
@ -51,6 +51,7 @@
|
|||
#include "Transports.h"
|
||||
#include "Weather.h"
|
||||
#include "BattleGround.h"
|
||||
#include "BattleGroundAV.h"
|
||||
#include "BattleGroundMgr.h"
|
||||
#include "ArenaTeam.h"
|
||||
#include "Chat.h"
|
||||
|
|
@ -4822,6 +4823,15 @@ uint32 Player::GetMeleeCritDamageReduction(uint32 damage) const
|
|||
return uint32 (melee * damage /100.0f);
|
||||
}
|
||||
|
||||
uint32 Player::GetMeleeDamageReduction(uint32 damage) const
|
||||
{
|
||||
float rate = GetRatingBonusValue(CR_CRIT_TAKEN_MELEE);
|
||||
// Resilience not limited (limit it by 100%)
|
||||
if (rate > 100.0f)
|
||||
rate = 100.0f;
|
||||
return uint32 (rate * damage / 100.0f);
|
||||
}
|
||||
|
||||
uint32 Player::GetRangedCritDamageReduction(uint32 damage) const
|
||||
{
|
||||
float ranged = GetRatingBonusValue(CR_CRIT_TAKEN_RANGED)*2.2f;
|
||||
|
|
@ -4829,6 +4839,15 @@ uint32 Player::GetRangedCritDamageReduction(uint32 damage) const
|
|||
return uint32 (ranged * damage /100.0f);
|
||||
}
|
||||
|
||||
uint32 Player::GetRangedDamageReduction(uint32 damage) const
|
||||
{
|
||||
float rate = GetRatingBonusValue(CR_CRIT_TAKEN_RANGED);
|
||||
// Resilience not limited (limit it by 100%)
|
||||
if (rate > 100.0f)
|
||||
rate = 100.0f;
|
||||
return uint32 (rate * damage / 100.0f);
|
||||
}
|
||||
|
||||
uint32 Player::GetSpellCritDamageReduction(uint32 damage) const
|
||||
{
|
||||
float spell = GetRatingBonusValue(CR_CRIT_TAKEN_SPELL)*2.2f;
|
||||
|
|
@ -4838,13 +4857,13 @@ uint32 Player::GetSpellCritDamageReduction(uint32 damage) const
|
|||
return uint32 (spell * damage / 100.0f);
|
||||
}
|
||||
|
||||
uint32 Player::GetDotDamageReduction(uint32 damage) const
|
||||
uint32 Player::GetSpellDamageReduction(uint32 damage) const
|
||||
{
|
||||
float spellDot = GetRatingBonusValue(CR_CRIT_TAKEN_SPELL);
|
||||
// Dot resilience not limited (limit it by 100%)
|
||||
if (spellDot > 100.0f)
|
||||
spellDot = 100.0f;
|
||||
return uint32 (spellDot * damage / 100.0f);
|
||||
float rate = GetRatingBonusValue(CR_CRIT_TAKEN_SPELL);
|
||||
// Resilience not limited (limit it by 100%)
|
||||
if (rate > 100.0f)
|
||||
rate = 100.0f;
|
||||
return uint32 (rate * damage / 100.0f);
|
||||
}
|
||||
|
||||
float Player::GetExpertiseDodgeOrParryReduction(WeaponAttackType attType) const
|
||||
|
|
@ -7410,6 +7429,14 @@ void Player::SendLoot(uint64 guid, LootType loot_type)
|
|||
if (go->getLootState() == GO_READY)
|
||||
{
|
||||
uint32 lootid = go->GetGOInfo()->GetLootId();
|
||||
if ((go->GetEntry() == BG_AV_OBJECTID_MINE_N || go->GetEntry() == BG_AV_OBJECTID_MINE_S))
|
||||
if (BattleGround *bg = GetBattleGround())
|
||||
if (bg->GetTypeID() == BATTLEGROUND_AV)
|
||||
if (!(((BattleGroundAV*)bg)->PlayerCanDoMineQuest(go->GetEntry(), GetTeam())))
|
||||
{
|
||||
SendLootRelease(guid);
|
||||
return;
|
||||
}
|
||||
|
||||
if (lootid)
|
||||
{
|
||||
|
|
@ -7476,6 +7503,8 @@ void Player::SendLoot(uint64 guid, LootType loot_type)
|
|||
bones->lootForBody = true;
|
||||
uint32 pLevel = bones->loot.gold;
|
||||
bones->loot.clear();
|
||||
if (GetBattleGround()->GetTypeID() == BATTLEGROUND_AV)
|
||||
loot->FillLoot(0, LootTemplates_Creature, this, false);
|
||||
// It may need a better formula
|
||||
// Now it works like this: lvl10: ~6copper, lvl70: ~9silver
|
||||
bones->loot.gold = (uint32)( urand(50, 150) * 0.016f * pow( ((float)pLevel)/5.76f, 2.5f) * sWorld.getRate(RATE_DROP_MONEY) );
|
||||
|
|
@ -7759,81 +7788,86 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid)
|
|||
case 2257:
|
||||
break;
|
||||
case 2597: // AV
|
||||
data << uint32(0x7ae) << uint32(0x1); // 7
|
||||
data << uint32(0x532) << uint32(0x1); // 8
|
||||
data << uint32(0x531) << uint32(0x0); // 9
|
||||
data << uint32(0x52e) << uint32(0x0); // 10
|
||||
data << uint32(0x571) << uint32(0x0); // 11
|
||||
data << uint32(0x570) << uint32(0x0); // 12
|
||||
data << uint32(0x567) << uint32(0x1); // 13
|
||||
data << uint32(0x566) << uint32(0x1); // 14
|
||||
data << uint32(0x550) << uint32(0x1); // 15
|
||||
data << uint32(0x544) << uint32(0x0); // 16
|
||||
data << uint32(0x536) << uint32(0x0); // 17
|
||||
data << uint32(0x535) << uint32(0x1); // 18
|
||||
data << uint32(0x518) << uint32(0x0); // 19
|
||||
data << uint32(0x517) << uint32(0x0); // 20
|
||||
data << uint32(0x574) << uint32(0x0); // 21
|
||||
data << uint32(0x573) << uint32(0x0); // 22
|
||||
data << uint32(0x572) << uint32(0x0); // 23
|
||||
data << uint32(0x56f) << uint32(0x0); // 24
|
||||
data << uint32(0x56e) << uint32(0x0); // 25
|
||||
data << uint32(0x56d) << uint32(0x0); // 26
|
||||
data << uint32(0x56c) << uint32(0x0); // 27
|
||||
data << uint32(0x56b) << uint32(0x0); // 28
|
||||
data << uint32(0x56a) << uint32(0x1); // 29
|
||||
data << uint32(0x569) << uint32(0x1); // 30
|
||||
data << uint32(0x568) << uint32(0x1); // 13
|
||||
data << uint32(0x565) << uint32(0x0); // 32
|
||||
data << uint32(0x564) << uint32(0x0); // 33
|
||||
data << uint32(0x563) << uint32(0x0); // 34
|
||||
data << uint32(0x562) << uint32(0x0); // 35
|
||||
data << uint32(0x561) << uint32(0x0); // 36
|
||||
data << uint32(0x560) << uint32(0x0); // 37
|
||||
data << uint32(0x55f) << uint32(0x0); // 38
|
||||
data << uint32(0x55e) << uint32(0x0); // 39
|
||||
data << uint32(0x55d) << uint32(0x0); // 40
|
||||
data << uint32(0x3c6) << uint32(0x4); // 41
|
||||
data << uint32(0x3c4) << uint32(0x6); // 42
|
||||
data << uint32(0x3c2) << uint32(0x4); // 43
|
||||
data << uint32(0x516) << uint32(0x1); // 44
|
||||
data << uint32(0x515) << uint32(0x0); // 45
|
||||
data << uint32(0x3b6) << uint32(0x6); // 46
|
||||
data << uint32(0x55c) << uint32(0x0); // 47
|
||||
data << uint32(0x55b) << uint32(0x0); // 48
|
||||
data << uint32(0x55a) << uint32(0x0); // 49
|
||||
data << uint32(0x559) << uint32(0x0); // 50
|
||||
data << uint32(0x558) << uint32(0x0); // 51
|
||||
data << uint32(0x557) << uint32(0x0); // 52
|
||||
data << uint32(0x556) << uint32(0x0); // 53
|
||||
data << uint32(0x555) << uint32(0x0); // 54
|
||||
data << uint32(0x554) << uint32(0x1); // 55
|
||||
data << uint32(0x553) << uint32(0x1); // 56
|
||||
data << uint32(0x552) << uint32(0x1); // 57
|
||||
data << uint32(0x551) << uint32(0x1); // 58
|
||||
data << uint32(0x54f) << uint32(0x0); // 59
|
||||
data << uint32(0x54e) << uint32(0x0); // 60
|
||||
data << uint32(0x54d) << uint32(0x1); // 61
|
||||
data << uint32(0x54c) << uint32(0x0); // 62
|
||||
data << uint32(0x54b) << uint32(0x0); // 63
|
||||
data << uint32(0x545) << uint32(0x0); // 64
|
||||
data << uint32(0x543) << uint32(0x1); // 65
|
||||
data << uint32(0x542) << uint32(0x0); // 66
|
||||
data << uint32(0x540) << uint32(0x0); // 67
|
||||
data << uint32(0x53f) << uint32(0x0); // 68
|
||||
data << uint32(0x53e) << uint32(0x0); // 69
|
||||
data << uint32(0x53d) << uint32(0x0); // 70
|
||||
data << uint32(0x53c) << uint32(0x0); // 71
|
||||
data << uint32(0x53b) << uint32(0x0); // 72
|
||||
data << uint32(0x53a) << uint32(0x1); // 73
|
||||
data << uint32(0x539) << uint32(0x0); // 74
|
||||
data << uint32(0x538) << uint32(0x0); // 75
|
||||
data << uint32(0x537) << uint32(0x0); // 76
|
||||
data << uint32(0x534) << uint32(0x0); // 77
|
||||
data << uint32(0x533) << uint32(0x0); // 78
|
||||
data << uint32(0x530) << uint32(0x0); // 79
|
||||
data << uint32(0x52f) << uint32(0x0); // 80
|
||||
data << uint32(0x52d) << uint32(0x1); // 81
|
||||
if (bg && bg->GetTypeID() == BATTLEGROUND_AV)
|
||||
bg->FillInitialWorldStates(data);
|
||||
else
|
||||
{
|
||||
data << uint32(0x7ae) << uint32(0x1); // 7 snowfall n
|
||||
data << uint32(0x532) << uint32(0x1); // 8 frostwolfhut hc
|
||||
data << uint32(0x531) << uint32(0x0); // 9 frostwolfhut ac
|
||||
data << uint32(0x52e) << uint32(0x0); // 10 stormpike firstaid a_a
|
||||
data << uint32(0x571) << uint32(0x0); // 11 east frostwolf tower horde assaulted -unused
|
||||
data << uint32(0x570) << uint32(0x0); // 12 west frostwolf tower horde assaulted - unused
|
||||
data << uint32(0x567) << uint32(0x1); // 13 frostwolfe c
|
||||
data << uint32(0x566) << uint32(0x1); // 14 frostwolfw c
|
||||
data << uint32(0x550) << uint32(0x1); // 15 irondeep (N) ally
|
||||
data << uint32(0x544) << uint32(0x0); // 16 ice grave a_a
|
||||
data << uint32(0x536) << uint32(0x0); // 17 stormpike grave h_c
|
||||
data << uint32(0x535) << uint32(0x1); // 18 stormpike grave a_c
|
||||
data << uint32(0x518) << uint32(0x0); // 19 stoneheart grave a_a
|
||||
data << uint32(0x517) << uint32(0x0); // 20 stoneheart grave h_a
|
||||
data << uint32(0x574) << uint32(0x0); // 21 1396 unk
|
||||
data << uint32(0x573) << uint32(0x0); // 22 iceblood tower horde assaulted -unused
|
||||
data << uint32(0x572) << uint32(0x0); // 23 towerpoint horde assaulted - unused
|
||||
data << uint32(0x56f) << uint32(0x0); // 24 1391 unk
|
||||
data << uint32(0x56e) << uint32(0x0); // 25 iceblood a
|
||||
data << uint32(0x56d) << uint32(0x0); // 26 towerp a
|
||||
data << uint32(0x56c) << uint32(0x0); // 27 frostwolfe a
|
||||
data << uint32(0x56b) << uint32(0x0); // 28 froswolfw a
|
||||
data << uint32(0x56a) << uint32(0x1); // 29 1386 unk
|
||||
data << uint32(0x569) << uint32(0x1); // 30 iceblood c
|
||||
data << uint32(0x568) << uint32(0x1); // 31 towerp c
|
||||
data << uint32(0x565) << uint32(0x0); // 32 stoneh tower a
|
||||
data << uint32(0x564) << uint32(0x0); // 33 icewing tower a
|
||||
data << uint32(0x563) << uint32(0x0); // 34 dunn a
|
||||
data << uint32(0x562) << uint32(0x0); // 35 duns a
|
||||
data << uint32(0x561) << uint32(0x0); // 36 stoneheart bunker alliance assaulted - unused
|
||||
data << uint32(0x560) << uint32(0x0); // 37 icewing bunker alliance assaulted - unused
|
||||
data << uint32(0x55f) << uint32(0x0); // 38 dunbaldar south alliance assaulted - unused
|
||||
data << uint32(0x55e) << uint32(0x0); // 39 dunbaldar north alliance assaulted - unused
|
||||
data << uint32(0x55d) << uint32(0x0); // 40 stone tower d
|
||||
data << uint32(0x3c6) << uint32(0x0); // 41 966 unk
|
||||
data << uint32(0x3c4) << uint32(0x0); // 42 964 unk
|
||||
data << uint32(0x3c2) << uint32(0x0); // 43 962 unk
|
||||
data << uint32(0x516) << uint32(0x1); // 44 stoneheart grave a_c
|
||||
data << uint32(0x515) << uint32(0x0); // 45 stonheart grave h_c
|
||||
data << uint32(0x3b6) << uint32(0x0); // 46 950 unk
|
||||
data << uint32(0x55c) << uint32(0x0); // 47 icewing tower d
|
||||
data << uint32(0x55b) << uint32(0x0); // 48 dunn d
|
||||
data << uint32(0x55a) << uint32(0x0); // 49 duns d
|
||||
data << uint32(0x559) << uint32(0x0); // 50 1369 unk
|
||||
data << uint32(0x558) << uint32(0x0); // 51 iceblood d
|
||||
data << uint32(0x557) << uint32(0x0); // 52 towerp d
|
||||
data << uint32(0x556) << uint32(0x0); // 53 frostwolfe d
|
||||
data << uint32(0x555) << uint32(0x0); // 54 frostwolfw d
|
||||
data << uint32(0x554) << uint32(0x1); // 55 stoneh tower c
|
||||
data << uint32(0x553) << uint32(0x1); // 56 icewing tower c
|
||||
data << uint32(0x552) << uint32(0x1); // 57 dunn c
|
||||
data << uint32(0x551) << uint32(0x1); // 58 duns c
|
||||
data << uint32(0x54f) << uint32(0x0); // 59 irondeep (N) horde
|
||||
data << uint32(0x54e) << uint32(0x0); // 60 irondeep (N) ally
|
||||
data << uint32(0x54d) << uint32(0x1); // 61 mine (S) neutral
|
||||
data << uint32(0x54c) << uint32(0x0); // 62 mine (S) horde
|
||||
data << uint32(0x54b) << uint32(0x0); // 63 mine (S) ally
|
||||
data << uint32(0x545) << uint32(0x0); // 64 iceblood h_a
|
||||
data << uint32(0x543) << uint32(0x1); // 65 iceblod h_c
|
||||
data << uint32(0x542) << uint32(0x0); // 66 iceblood a_c
|
||||
data << uint32(0x540) << uint32(0x0); // 67 snowfall h_a
|
||||
data << uint32(0x53f) << uint32(0x0); // 68 snowfall a_a
|
||||
data << uint32(0x53e) << uint32(0x0); // 69 snowfall h_c
|
||||
data << uint32(0x53d) << uint32(0x0); // 70 snowfall a_c
|
||||
data << uint32(0x53c) << uint32(0x0); // 71 frostwolf g h_a
|
||||
data << uint32(0x53b) << uint32(0x0); // 72 frostwolf g a_a
|
||||
data << uint32(0x53a) << uint32(0x1); // 73 frostwolf g h_c
|
||||
data << uint32(0x539) << uint32(0x0); // 74 frostwolf g a_c
|
||||
data << uint32(0x538) << uint32(0x0); // 75 stormpike grave h_a
|
||||
data << uint32(0x537) << uint32(0x0); // 76 stormpike grave a_a
|
||||
data << uint32(0x534) << uint32(0x0); // 77 frostwolf hut h_a
|
||||
data << uint32(0x533) << uint32(0x0); // 78 frostwolf hut a_a
|
||||
data << uint32(0x530) << uint32(0x0); // 79 stormpike first aid h_a
|
||||
data << uint32(0x52f) << uint32(0x0); // 80 stormpike first aid h_c
|
||||
data << uint32(0x52d) << uint32(0x1); // 81 stormpike first aid a_c
|
||||
}
|
||||
break;
|
||||
case 3277: // WS
|
||||
if (bg && bg->GetTypeID() == BATTLEGROUND_WS)
|
||||
|
|
@ -12645,6 +12679,10 @@ void Player::RewardQuest( Quest const *pQuest, uint32 reward, Object* questGiver
|
|||
|
||||
RemoveTimedQuest(quest_id);
|
||||
|
||||
if (BattleGround* bg = GetBattleGround())
|
||||
if (bg->GetTypeID() == BATTLEGROUND_AV)
|
||||
((BattleGroundAV*)bg)->HandleQuestComplete(pQuest->GetQuestId(), this);
|
||||
|
||||
if (pQuest->GetRewChoiceItemsCount() > 0)
|
||||
{
|
||||
if (uint32 itemId = pQuest->RewChoiceItemId[reward])
|
||||
|
|
@ -13751,7 +13789,8 @@ bool Player::HasQuestForItem( uint32 itemid ) const
|
|||
continue;
|
||||
|
||||
// hide quest if player is in raid-group and quest is no raid quest
|
||||
if(GetGroup() && GetGroup()->isRaidGroup() && qinfo->GetType() != QUEST_TYPE_RAID)
|
||||
if (GetGroup() && GetGroup()->isRaidGroup() && qinfo->GetType() != QUEST_TYPE_RAID
|
||||
&& !InBattleGround())
|
||||
continue;
|
||||
|
||||
// There should be no mixed ReqItem/ReqSource drop
|
||||
|
|
@ -18651,7 +18690,7 @@ bool Player::GetBGAccessByLevel(BattleGroundTypeId bgTypeId) const
|
|||
return true;
|
||||
}
|
||||
|
||||
BGQueueIdBasedOnLevel Player::GetBattleGroundQueueIdFromLevel(BattleGroundTypeId bgTypeId) const
|
||||
BGQueueIdBasedOnLevel Player::GetBattleGroundQueueIdFromLevel() const
|
||||
{
|
||||
// for ranges 0 - 19, 20 - 29, 30 - 39, 40 - 49, 50 - 59, 60 - 69, 70 - 79, 80
|
||||
uint32 queue_id = ( getLevel() / 10) - 1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue