@@ -0,0 +1,26 @@
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=52781;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(17,0,52781,0,0,31,0,3,28610,0,0,27,0,'','Persuasive Strike - Scarlet Marksman'),
|
||||
(17,0,52781,0,1,31,0,3,28939,0,0,27,0,'','Persuasive Strike - Scarlet Preacher'),
|
||||
(17,0,52781,0,2,31,0,3,28940,0,0,27,0,'','Persuasive Strike - Scarlet Crusader');
|
||||
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (32096,32098);
|
||||
INSERT INTO `spell_linked_spell` (`spell_trigger`,`spell_effect`,`type`,`comment`) VALUES
|
||||
(32096,32172,2,'Thrallmar''s Favor'),
|
||||
(32098,32172,2,'Honor Hold''s Favor');
|
||||
|
||||
DELETE FROM `spell_area` WHERE `spell` IN (32096,32098);
|
||||
INSERT INTO `spell_area` (`spell`,`area`,`autocast`) VALUES
|
||||
(32096,3483,0),
|
||||
(32096,3562,0),
|
||||
(32096,3713,0),
|
||||
(32096,3714,0),
|
||||
(32096,3836,0),
|
||||
(32098,3483,0),
|
||||
(32098,3562,0),
|
||||
(32098,3713,0),
|
||||
(32098,3714,0),
|
||||
(32098,3836,0);
|
||||
|
||||
-- Dark / Light essence removing
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (-67222, -67223, -67224, -65686, -67176, -67177, -67178, -65684);
|
||||
@@ -2336,12 +2336,7 @@ void WorldObject::SetZoneScript()
|
||||
if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(GetZoneId()))
|
||||
m_zoneScript = bf;
|
||||
else
|
||||
{
|
||||
if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(GetZoneId()))
|
||||
m_zoneScript = bf;
|
||||
else
|
||||
m_zoneScript = sOutdoorPvPMgr->GetZoneScript(GetZoneId());
|
||||
}
|
||||
m_zoneScript = sOutdoorPvPMgr->GetZoneScript(GetZoneId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,7 +268,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petentry, uint32 petnumber, bool c
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_PET_SLOT_BY_SLOT_EXCLUDE_ID);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_PET_SLOT_BY_SLOT_EXCLUDE_ID);
|
||||
stmt->setUInt8(0, uint8(PET_SAVE_NOT_IN_SLOT));
|
||||
stmt->setUInt32(1, ownerid);
|
||||
stmt->setUInt8(2, uint8(PET_SAVE_AS_CURRENT));
|
||||
@@ -333,7 +333,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petentry, uint32 petnumber, bool c
|
||||
|
||||
if (getPetType() == HUNTER_PET)
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_DECLINED_NAME);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_DECLINED_NAME);
|
||||
stmt->setUInt32(0, owner->GetGUIDLow());
|
||||
stmt->setUInt32(1, GetCharmInfo()->GetPetNumber());
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
@@ -429,7 +429,7 @@ void Pet::SavePetToDB(PetSaveMode mode)
|
||||
// prevent existence another hunter pet in PET_SAVE_AS_CURRENT and PET_SAVE_NOT_IN_SLOT
|
||||
if (getPetType() == HUNTER_PET && (mode == PET_SAVE_AS_CURRENT || mode > PET_SAVE_LAST_STABLE_SLOT))
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_BY_SLOT);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_BY_SLOT);
|
||||
stmt->setUInt32(0, ownerLowGUID);
|
||||
stmt->setUInt8(1, uint8(PET_SAVE_AS_CURRENT));
|
||||
stmt->setUInt8(2, uint8(PET_SAVE_LAST_STABLE_SLOT));
|
||||
@@ -1350,7 +1350,7 @@ void Pet::_SaveAuras(SQLTransaction& trans)
|
||||
|
||||
uint8 index = 0;
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET_AURA);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET_AURA);
|
||||
stmt->setUInt32(index++, m_charmInfo->GetPetNumber());
|
||||
stmt->setUInt64(index++, casterGUID);
|
||||
stmt->setUInt32(index++, itr->second->GetId());
|
||||
|
||||
@@ -4750,7 +4750,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||
|
||||
// We can return mail now
|
||||
// So firstly delete the old one
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID);
|
||||
stmt->setUInt32(0, mail_id);
|
||||
trans->Append(stmt);
|
||||
|
||||
@@ -4759,7 +4759,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||
{
|
||||
if (has_items)
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID);
|
||||
stmt->setUInt32(0, mail_id);
|
||||
trans->Append(stmt);
|
||||
}
|
||||
@@ -4773,7 +4773,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||
if (has_items)
|
||||
{
|
||||
// Data needs to be at first place for Item::LoadFromDB
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_MAILITEMS);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_MAILITEMS);
|
||||
stmt->setUInt32(0, mail_id);
|
||||
PreparedQueryResult resultItems = CharacterDatabase.Query(stmt);
|
||||
if (resultItems)
|
||||
@@ -4988,7 +4988,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||
// The character gets unlinked from the account, the name gets freed up and appears as deleted ingame
|
||||
case CHAR_DELETE_UNLINK:
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_DELETE_INFO);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_DELETE_INFO);
|
||||
|
||||
stmt->setUInt32(0, guid);
|
||||
|
||||
@@ -5725,7 +5725,7 @@ void Player::HandleBaseModValue(BaseModGroup modGroup, BaseModType modType, floa
|
||||
|
||||
float Player::GetBaseModValue(BaseModGroup modGroup, BaseModType modType) const
|
||||
{
|
||||
if (modGroup >= BASEMOD_END || modType > MOD_END)
|
||||
if (modGroup >= BASEMOD_END || modType >= MOD_END)
|
||||
{
|
||||
sLog->outError(LOG_FILTER_SPELLS_AURAS, "trial to access non existed BaseModGroup or wrong BaseModType!");
|
||||
return 0.0f;
|
||||
@@ -6993,7 +6993,10 @@ int32 Player::CalculateReputationGain(ReputationSource source, uint32 creatureOr
|
||||
percent *= repRate;
|
||||
}
|
||||
|
||||
return int32(rep * percent / 100.0f);
|
||||
if (source != REPUTATION_SOURCE_SPELL && GetsRecruitAFriendBonus(false))
|
||||
percent *= 1.0f + sWorld->getRate(RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS);
|
||||
|
||||
return CalculatePct(rep, percent);
|
||||
}
|
||||
|
||||
// Calculates how many reputation points player gains in victim's enemy factions
|
||||
@@ -7016,43 +7019,20 @@ void Player::RewardReputation(Unit* victim, float rate)
|
||||
// support for: Championing - http://www.wowwiki.com/Championing
|
||||
|
||||
Map const* map = GetMap();
|
||||
if (map && map->IsDungeon())
|
||||
if (map && map->IsNonRaidDungeon())
|
||||
{
|
||||
InstanceTemplate const* instance = sObjectMgr->GetInstanceTemplate(map->GetId());
|
||||
if (instance)
|
||||
{
|
||||
AccessRequirement const* pAccessRequirement = sObjectMgr->GetAccessRequirement(map->GetId(), ((InstanceMap*)map)->GetDifficulty());
|
||||
if (pAccessRequirement)
|
||||
{
|
||||
if (!map->IsRaid() && pAccessRequirement->levelMin == 80)
|
||||
ChampioningFaction = GetChampioningFaction();
|
||||
}
|
||||
}
|
||||
if (AccessRequirement const* accessRequirement = sObjectMgr->GetAccessRequirement(map->GetId(), map->GetDifficulty()))
|
||||
if (accessRequirement->levelMin == 80)
|
||||
ChampioningFaction = GetChampioningFaction();
|
||||
}
|
||||
}
|
||||
|
||||
// Favored reputation increase START
|
||||
uint32 zone = GetZoneId();
|
||||
uint32 team = GetTeam();
|
||||
float favored_rep_mult = 0;
|
||||
|
||||
if ((HasAura(32096) || HasAura(32098)) && (zone == 3483 || zone == 3562 || zone == 3836 || zone == 3713 || zone == 3714))
|
||||
favored_rep_mult = 0.25; // Thrallmar's Favor and Honor Hold's Favor
|
||||
else if (HasAura(30754) && (Rep->RepFaction1 == 609 || Rep->RepFaction2 == 609) && !ChampioningFaction)
|
||||
favored_rep_mult = 0.25; // Cenarion Favor
|
||||
|
||||
if (favored_rep_mult > 0) favored_rep_mult *= 2; // Multiplied by 2 because the reputation is divided by 2 for some reason (See "donerep1 / 2" and "donerep2 / 2") -- if you know why this is done, please update/explain :)
|
||||
// Favored reputation increase END
|
||||
|
||||
bool recruitAFriend = GetsRecruitAFriendBonus(false);
|
||||
|
||||
if (Rep->RepFaction1 && (!Rep->TeamDependent || team == ALLIANCE))
|
||||
{
|
||||
int32 donerep1 = CalculateReputationGain(REPUTATION_SOURCE_KILL, victim->getLevel(), Rep->RepValue1, ChampioningFaction ? ChampioningFaction : Rep->RepFaction1);
|
||||
donerep1 = int32(donerep1*(rate + favored_rep_mult));
|
||||
|
||||
if (recruitAFriend)
|
||||
donerep1 = int32(donerep1 * (1 + sWorld->getRate(RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS)));
|
||||
donerep1 = int32(donerep1 * rate);
|
||||
|
||||
FactionEntry const* factionEntry1 = sFactionStore.LookupEntry(ChampioningFaction ? ChampioningFaction : Rep->RepFaction1);
|
||||
uint32 current_reputation_rank1 = GetReputationMgr().GetRank(factionEntry1);
|
||||
@@ -7063,10 +7043,7 @@ void Player::RewardReputation(Unit* victim, float rate)
|
||||
if (Rep->RepFaction2 && (!Rep->TeamDependent || team == HORDE))
|
||||
{
|
||||
int32 donerep2 = CalculateReputationGain(REPUTATION_SOURCE_KILL, victim->getLevel(), Rep->RepValue2, ChampioningFaction ? ChampioningFaction : Rep->RepFaction2);
|
||||
donerep2 = int32(donerep2*(rate + favored_rep_mult));
|
||||
|
||||
if (recruitAFriend)
|
||||
donerep2 = int32(donerep2 * (1 + sWorld->getRate(RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS)));
|
||||
donerep2 = int32(donerep2 * rate);
|
||||
|
||||
FactionEntry const* factionEntry2 = sFactionStore.LookupEntry(ChampioningFaction ? ChampioningFaction : Rep->RepFaction2);
|
||||
uint32 current_reputation_rank2 = GetReputationMgr().GetRank(factionEntry2);
|
||||
@@ -7078,59 +7055,43 @@ void Player::RewardReputation(Unit* victim, float rate)
|
||||
// Calculate how many reputation points player gain with the quest
|
||||
void Player::RewardReputation(Quest const* quest)
|
||||
{
|
||||
bool recruitAFriend = GetsRecruitAFriendBonus(false);
|
||||
|
||||
// quest reputation reward/loss
|
||||
for (uint8 i = 0; i < QUEST_REPUTATIONS_COUNT; ++i)
|
||||
{
|
||||
if (!quest->RewardFactionId[i])
|
||||
continue;
|
||||
|
||||
int32 rep = 0;
|
||||
bool noQuestBonus = false;
|
||||
|
||||
if (quest->RewardFactionValueIdOverride[i])
|
||||
{
|
||||
int32 rep = 0;
|
||||
|
||||
if (quest->IsDaily())
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_DAILY_QUEST, GetQuestLevel(quest), quest->RewardFactionValueIdOverride[i]/100, quest->RewardFactionId[i], true);
|
||||
else if (quest->IsWeekly())
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_WEEKLY_QUEST, GetQuestLevel(quest), quest->RewardFactionValueIdOverride[i]/100, quest->RewardFactionId[i], true);
|
||||
else if (quest->IsMonthly())
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_MONTHLY_QUEST, GetQuestLevel(quest), quest->RewardFactionValueIdOverride[i]/100, quest->RewardFactionId[i], true);
|
||||
else
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_QUEST, GetQuestLevel(quest), quest->RewardFactionValueIdOverride[i]/100, quest->RewardFactionId[i], true);
|
||||
|
||||
if (recruitAFriend)
|
||||
rep = int32(rep * (1 + sWorld->getRate(RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS)));
|
||||
|
||||
if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(quest->RewardFactionId[i]))
|
||||
GetReputationMgr().ModifyReputation(factionEntry, rep);
|
||||
rep = quest->RewardFactionValueIdOverride[i] / 100;
|
||||
noQuestBonus = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32 row = ((quest->RewardFactionValueId[i] < 0) ? 1 : 0) + 1;
|
||||
uint32 field = abs(quest->RewardFactionValueId[i]);
|
||||
|
||||
if (QuestFactionRewEntry const* pRow = sQuestFactionRewardStore.LookupEntry(row))
|
||||
if (QuestFactionRewEntry const* questFactionRewEntry = sQuestFactionRewardStore.LookupEntry(row))
|
||||
{
|
||||
int32 repPoints = pRow->QuestRewFactionValue[field];
|
||||
if (!repPoints)
|
||||
continue;
|
||||
|
||||
if (quest->IsDaily())
|
||||
repPoints = CalculateReputationGain(REPUTATION_SOURCE_DAILY_QUEST, GetQuestLevel(quest), repPoints, quest->RewardFactionId[i]);
|
||||
else if (quest->IsWeekly())
|
||||
repPoints = CalculateReputationGain(REPUTATION_SOURCE_WEEKLY_QUEST, GetQuestLevel(quest), repPoints, quest->RewardFactionId[i]);
|
||||
else if (quest->IsMonthly())
|
||||
repPoints = CalculateReputationGain(REPUTATION_SOURCE_MONTHLY_QUEST, GetQuestLevel(quest), repPoints, quest->RewardFactionId[i]);
|
||||
else
|
||||
repPoints = CalculateReputationGain(REPUTATION_SOURCE_QUEST, GetQuestLevel(quest), repPoints, quest->RewardFactionId[i]);
|
||||
|
||||
if (recruitAFriend)
|
||||
repPoints = int32(repPoints * (1 + sWorld->getRate(RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS)));
|
||||
|
||||
if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(quest->RewardFactionId[i]))
|
||||
GetReputationMgr().ModifyReputation(factionEntry, repPoints);
|
||||
uint32 field = abs(quest->RewardFactionValueId[i]);
|
||||
rep = questFactionRewEntry->QuestRewFactionValue[field];
|
||||
}
|
||||
}
|
||||
|
||||
if (!rep)
|
||||
continue;
|
||||
|
||||
if (quest->IsDaily())
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_DAILY_QUEST, GetQuestLevel(quest), rep, quest->RewardFactionId[i], noQuestBonus);
|
||||
else if (quest->IsWeekly())
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_WEEKLY_QUEST, GetQuestLevel(quest), rep, quest->RewardFactionId[i], noQuestBonus);
|
||||
else if (quest->IsMonthly())
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_MONTHLY_QUEST, GetQuestLevel(quest), rep, quest->RewardFactionId[i], noQuestBonus);
|
||||
else
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_QUEST, GetQuestLevel(quest), rep, quest->RewardFactionId[i], noQuestBonus);
|
||||
|
||||
if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(quest->RewardFactionId[i]))
|
||||
GetReputationMgr().ModifyReputation(factionEntry, rep);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7431,7 +7392,7 @@ uint32 Player::GetZoneIdFromDB(uint64 guid)
|
||||
if (!zone)
|
||||
{
|
||||
// stored zone is zero, use generic and slow zone detection
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_POSITION_XYZ);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_POSITION_XYZ);
|
||||
stmt->setUInt32(0, guidLow);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
|
||||
@@ -7447,7 +7408,7 @@ uint32 Player::GetZoneIdFromDB(uint64 guid)
|
||||
|
||||
if (zone > 0)
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ZONE);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ZONE);
|
||||
|
||||
stmt->setUInt16(0, uint16(zone));
|
||||
stmt->setUInt32(1, guidLow);
|
||||
@@ -8394,25 +8355,11 @@ void Player::CastItemCombatSpell(Unit* target, WeaponAttackType attType, uint32
|
||||
|
||||
if (spellData.SpellPPMRate)
|
||||
{
|
||||
if (spellData.SpellId == 52781) // Persuasive Strike
|
||||
{
|
||||
switch (target->GetEntry())
|
||||
{
|
||||
default:
|
||||
return;
|
||||
case 28939:
|
||||
case 28940:
|
||||
case 28610:
|
||||
break;
|
||||
}
|
||||
}
|
||||
uint32 WeaponSpeed = GetAttackTime(attType);
|
||||
chance = GetPPMProcChance(WeaponSpeed, spellData.SpellPPMRate, spellInfo);
|
||||
}
|
||||
else if (chance > 100.0f)
|
||||
{
|
||||
chance = GetWeaponProcChance();
|
||||
}
|
||||
|
||||
if (roll_chance_f(chance))
|
||||
CastSpell(target, spellInfo->Id, true, item);
|
||||
@@ -9683,8 +9630,8 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid)
|
||||
instance->FillInitialWorldStates(data);
|
||||
else
|
||||
{
|
||||
data << uint32(4132) << uint32(0); // 9 WORLDSTATE_SHOW_CRATES
|
||||
data << uint32(4131) << uint32(0); // 10 WORLDSTATE_CRATES_REVEALED
|
||||
data << uint32(4132) << uint32(0); // 9 WORLDSTATE_ALGALON_TIMER_ENABLED
|
||||
data << uint32(4131) << uint32(0); // 10 WORLDSTATE_ALGALON_DESPAWN_TIMER
|
||||
}
|
||||
break;
|
||||
// Wintergrasp
|
||||
@@ -9826,11 +9773,10 @@ void Player::SetSheath(SheathState sheathed)
|
||||
SetVirtualItemSlot(2, NULL);
|
||||
break;
|
||||
case SHEATH_STATE_MELEE: // prepared melee weapon
|
||||
{
|
||||
SetVirtualItemSlot(0, GetWeaponForAttack(BASE_ATTACK, true));
|
||||
SetVirtualItemSlot(1, GetWeaponForAttack(OFF_ATTACK, true));
|
||||
SetVirtualItemSlot(2, NULL);
|
||||
}; break;
|
||||
break;
|
||||
case SHEATH_STATE_RANGED: // prepared ranged weapon
|
||||
SetVirtualItemSlot(0, NULL);
|
||||
SetVirtualItemSlot(1, NULL);
|
||||
@@ -11968,7 +11914,7 @@ InventoryResult Player::CanRollForItemInLFG(ItemTemplate const* proto, WorldObje
|
||||
Map const* map = lootedObject->GetMap();
|
||||
if (uint32 dungeonId = sLFGMgr->GetDungeon(GetGroup()->GetGUID(), true))
|
||||
if (LFGDungeonData const* dungeon = sLFGMgr->GetLFGDungeon(dungeonId))
|
||||
if (uint32(dungeon->map) == map->GetId() && dungeon->difficulty == uint32(map->GetDifficulty()))
|
||||
if (uint32(dungeon->map) == map->GetId() && dungeon->difficulty == map->GetDifficulty())
|
||||
lootedObjectInDungeon = true;
|
||||
|
||||
if (!lootedObjectInDungeon)
|
||||
@@ -12366,12 +12312,12 @@ Item* Player::EquipItem(uint16 pos, Item* pItem, bool update)
|
||||
|
||||
switch (slot)
|
||||
{
|
||||
case EQUIPMENT_SLOT_MAINHAND:
|
||||
case EQUIPMENT_SLOT_OFFHAND:
|
||||
case EQUIPMENT_SLOT_RANGED:
|
||||
RecalculateRating(CR_ARMOR_PENETRATION);
|
||||
default:
|
||||
break;
|
||||
case EQUIPMENT_SLOT_MAINHAND:
|
||||
case EQUIPMENT_SLOT_OFFHAND:
|
||||
case EQUIPMENT_SLOT_RANGED:
|
||||
RecalculateRating(CR_ARMOR_PENETRATION);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -17786,7 +17732,7 @@ Item* Player::_LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, F
|
||||
}
|
||||
else
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ITEM_REFUNDS);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ITEM_REFUNDS);
|
||||
stmt->setUInt32(0, item->GetGUIDLow());
|
||||
stmt->setUInt32(1, GetGUIDLow());
|
||||
if (PreparedQueryResult result = CharacterDatabase.Query(stmt))
|
||||
@@ -17806,7 +17752,7 @@ Item* Player::_LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, F
|
||||
}
|
||||
else if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE))
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ITEM_BOP_TRADE);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ITEM_BOP_TRADE);
|
||||
stmt->setUInt32(0, item->GetGUIDLow());
|
||||
if (PreparedQueryResult result = CharacterDatabase.Query(stmt))
|
||||
{
|
||||
@@ -18410,11 +18356,12 @@ InstancePlayerBind* Player::BindToInstance(InstanceSave* save, bool permanent, b
|
||||
if (save)
|
||||
{
|
||||
InstancePlayerBind& bind = m_boundInstances[save->GetDifficulty()][save->GetMapId()];
|
||||
if (bind.save)
|
||||
if (!load)
|
||||
{
|
||||
// update the save when the group kills a boss
|
||||
if (permanent != bind.perm || save != bind.save)
|
||||
if (!load)
|
||||
if (bind.save)
|
||||
{
|
||||
// update the save when the group kills a boss
|
||||
if (permanent != bind.perm || save != bind.save)
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_INSTANCE);
|
||||
|
||||
@@ -18425,9 +18372,8 @@ InstancePlayerBind* Player::BindToInstance(InstanceSave* save, bool permanent, b
|
||||
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (!load)
|
||||
}
|
||||
else
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_INSTANCE);
|
||||
|
||||
@@ -18437,6 +18383,7 @@ InstancePlayerBind* Player::BindToInstance(InstanceSave* save, bool permanent, b
|
||||
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
}
|
||||
|
||||
if (bind.save != save)
|
||||
{
|
||||
@@ -18455,8 +18402,8 @@ InstancePlayerBind* Player::BindToInstance(InstanceSave* save, bool permanent, b
|
||||
sScriptMgr->OnPlayerBindToInstance(this, save->GetDifficulty(), save->GetMapId(), permanent);
|
||||
return &bind;
|
||||
}
|
||||
else
|
||||
return NULL;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void Player::BindToInstance()
|
||||
@@ -19144,7 +19091,7 @@ void Player::_SaveInventory(SQLTransaction& trans)
|
||||
if (!item || item->GetState() == ITEM_NEW)
|
||||
continue;
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM);
|
||||
stmt->setUInt32(0, item->GetGUIDLow());
|
||||
trans->Append(stmt);
|
||||
|
||||
@@ -19229,7 +19176,6 @@ void Player::_SaveInventory(SQLTransaction& trans)
|
||||
}
|
||||
}
|
||||
|
||||
PreparedStatement* stmt = NULL;
|
||||
switch (item->GetState())
|
||||
{
|
||||
case ITEM_NEW:
|
||||
@@ -19266,7 +19212,7 @@ void Player::_SaveMail(SQLTransaction& trans)
|
||||
Mail* m = (*itr);
|
||||
if (m->state == MAIL_STATE_CHANGED)
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_MAIL);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_MAIL);
|
||||
stmt->setUInt8(0, uint8(m->HasItems() ? 1 : 0));
|
||||
stmt->setUInt32(1, uint32(m->expire_time));
|
||||
stmt->setUInt32(2, uint32(m->deliver_time));
|
||||
@@ -19293,7 +19239,6 @@ void Player::_SaveMail(SQLTransaction& trans)
|
||||
{
|
||||
if (m->HasItems())
|
||||
{
|
||||
PreparedStatement* stmt = NULL;
|
||||
for (MailItemInfoVec::iterator itr2 = m->items.begin(); itr2 != m->items.end(); ++itr2)
|
||||
{
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE);
|
||||
@@ -20648,7 +20593,7 @@ void Player::RemovePetitionsAndSigns(uint64 guid, uint32 type)
|
||||
|
||||
if (type == 10)
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_PETITION_SIGNATURES);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_PETITION_SIGNATURES);
|
||||
|
||||
stmt->setUInt32(0, GUID_LOPART(guid));
|
||||
|
||||
@@ -20656,7 +20601,7 @@ void Player::RemovePetitionsAndSigns(uint64 guid, uint32 type)
|
||||
}
|
||||
else
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE);
|
||||
|
||||
stmt->setUInt32(0, GUID_LOPART(guid));
|
||||
stmt->setUInt8(1, uint8(type));
|
||||
@@ -20714,7 +20659,7 @@ void Player::LeaveAllArenaTeams(uint64 guid)
|
||||
while (result->NextRow());
|
||||
}
|
||||
|
||||
void Player::SetRestBonus (float rest_bonus_new)
|
||||
void Player::SetRestBonus(float rest_bonus_new)
|
||||
{
|
||||
// Prevent resting on max level
|
||||
if (getLevel() >= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
|
||||
@@ -1806,7 +1806,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
|
||||
if (recvData.GetOpcode() == CMSG_CHAR_FACTION_CHANGE)
|
||||
{
|
||||
// Delete all Flypaths
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TAXI_PATH);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TAXI_PATH);
|
||||
stmt->setUInt32(0, lowGuid);
|
||||
trans->Append(stmt);
|
||||
|
||||
@@ -1851,7 +1851,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
|
||||
taximaskstream << '0';
|
||||
std::string taximask = taximaskstream.str();
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TAXIMASK);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TAXIMASK);
|
||||
stmt->setString(0, taximask);
|
||||
stmt->setUInt32(1, lowGuid);
|
||||
trans->Append(stmt);
|
||||
@@ -1898,7 +1898,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
|
||||
if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD))
|
||||
{
|
||||
// Reset guild
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER);
|
||||
|
||||
stmt->setUInt32(0, lowGuid);
|
||||
|
||||
@@ -1911,7 +1911,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
|
||||
if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_ADD_FRIEND))
|
||||
{
|
||||
// Delete Friend List
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SOCIAL_BY_GUID);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SOCIAL_BY_GUID);
|
||||
stmt->setUInt32(0, lowGuid);
|
||||
trans->Append(stmt);
|
||||
|
||||
@@ -1957,7 +1957,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
|
||||
uint32 achiev_alliance = it->first;
|
||||
uint32 achiev_horde = it->second;
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_BY_ACHIEVEMENT);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_BY_ACHIEVEMENT);
|
||||
stmt->setUInt16(0, uint16(team == TEAM_ALLIANCE ? achiev_alliance : achiev_horde));
|
||||
stmt->setUInt32(1, lowGuid);
|
||||
trans->Append(stmt);
|
||||
@@ -1975,7 +1975,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
|
||||
uint32 item_alliance = it->first;
|
||||
uint32 item_horde = it->second;
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_INVENTORY_FACTION_CHANGE);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_INVENTORY_FACTION_CHANGE);
|
||||
stmt->setUInt32(0, (team == TEAM_ALLIANCE ? item_alliance : item_horde));
|
||||
stmt->setUInt32(1, (team == TEAM_ALLIANCE ? item_horde : item_alliance));
|
||||
stmt->setUInt32(2, guid);
|
||||
@@ -1988,7 +1988,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
|
||||
uint32 spell_alliance = it->first;
|
||||
uint32 spell_horde = it->second;
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SPELL_BY_SPELL);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SPELL_BY_SPELL);
|
||||
stmt->setUInt32(0, (team == TEAM_ALLIANCE ? spell_alliance : spell_horde));
|
||||
stmt->setUInt32(1, lowGuid);
|
||||
trans->Append(stmt);
|
||||
@@ -2009,7 +2009,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
|
||||
uint32 oldReputation = (team == TEAM_ALLIANCE) ? reputation_horde : reputation_alliance;
|
||||
|
||||
// select old standing set in db
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_REP_BY_FACTION);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_REP_BY_FACTION);
|
||||
stmt->setUInt32(0, oldReputation);
|
||||
stmt->setUInt32(1, lowGuid);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
@@ -2101,7 +2101,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
|
||||
for (uint32 index = 0; index < ktcount; ++index)
|
||||
ss << knownTitles[index] << ' ';
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TITLES_FACTION_CHANGE);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TITLES_FACTION_CHANGE);
|
||||
stmt->setString(0, ss.str().c_str());
|
||||
stmt->setUInt32(1, lowGuid);
|
||||
trans->Append(stmt);
|
||||
|
||||
@@ -2474,7 +2474,7 @@ bool InstanceMap::AddPlayerToMap(Player* player)
|
||||
if (uint32 dungeonId = sLFGMgr->GetDungeon(group->GetGUID(), true))
|
||||
if (LFGDungeonData const* dungeon = sLFGMgr->GetLFGDungeon(dungeonId))
|
||||
if (LFGDungeonData const* randomDungeon = sLFGMgr->GetLFGDungeon(*(sLFGMgr->GetSelectedDungeons(player->GetGUID()).begin())))
|
||||
if (uint32(dungeon->map) == GetId() && dungeon->difficulty == uint32(GetDifficulty()) && randomDungeon->type == uint32(LFG_TYPE_RANDOM))
|
||||
if (uint32(dungeon->map) == GetId() && dungeon->difficulty == GetDifficulty() && randomDungeon->type == LFG_TYPE_RANDOM)
|
||||
player->CastSpell(player, LFG_SPELL_LUCK_OF_THE_DRAW, true);
|
||||
}
|
||||
|
||||
|
||||
@@ -5453,7 +5453,7 @@ void AuraEffect::HandleAuraLinked(AuraApplication const* aurApp, uint8 mode, boo
|
||||
{
|
||||
Unit* target = aurApp->GetTarget();
|
||||
|
||||
uint32 triggeredSpellId = m_spellInfo->Effects[m_effIndex].TriggerSpell;
|
||||
uint32 triggeredSpellId = sSpellMgr->GetSpellIdForDifficulty(m_spellInfo->Effects[m_effIndex].TriggerSpell, target);
|
||||
SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(triggeredSpellId);
|
||||
if (!triggeredSpellInfo)
|
||||
return;
|
||||
|
||||
@@ -406,7 +406,6 @@ DumpReturn PlayerDumpReader::LoadDump(std::string const& file, uint32 account, s
|
||||
if (!fin)
|
||||
return DUMP_FILE_OPEN_ERROR;
|
||||
|
||||
QueryResult result = QueryResult(NULL);
|
||||
char newguid[20], chraccount[20], newpetid[20], currpetid[20], lastpetid[20];
|
||||
|
||||
// make sure the same guid doesn't already exist and is safe to use
|
||||
|
||||
@@ -208,7 +208,7 @@ class boss_ignis : public CreatureScript
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_JET:
|
||||
me->MonsterTextEmote(EMOTE_JETS, 0, true);
|
||||
Talk(EMOTE_JETS);
|
||||
DoCast(me, SPELL_FLAME_JETS);
|
||||
events.ScheduleEvent(EVENT_JET, urand(35000, 40000));
|
||||
break;
|
||||
|
||||
@@ -1084,7 +1084,7 @@ class achievement_quick_shave : public AchievementCriteriaScript
|
||||
|
||||
bool OnCheck(Player* /*source*/, Unit* target)
|
||||
{
|
||||
if (target)
|
||||
if (target)
|
||||
if (Creature* razorscale = target->ToCreature())
|
||||
if (razorscale->AI()->GetData(DATA_QUICK_SHAVE))
|
||||
return true;
|
||||
|
||||
@@ -1418,7 +1418,7 @@ class spell_gen_luck_of_the_draw : public SpellScriptLoader
|
||||
if (group->isLFGGroup())
|
||||
if (uint32 dungeonId = sLFGMgr->GetDungeon(group->GetGUID(), true))
|
||||
if (LFGDungeonData const* dungeon = sLFGMgr->GetLFGDungeon(dungeonId))
|
||||
if (uint32(dungeon->map) == map->GetId() && dungeon->difficulty == uint32(map->GetDifficulty()))
|
||||
if (uint32(dungeon->map) == map->GetId() && dungeon->difficulty == map->GetDifficulty())
|
||||
if (randomDungeon && randomDungeon->type == LFG_TYPE_RANDOM)
|
||||
return; // in correct dungeon
|
||||
|
||||
|
||||
Reference in New Issue
Block a user